0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Mockitoまとめ

Posted at

Mockitoについて

Javaのユニットテスト用に開発されたモックフレームワーク、テストでモックオブジェクトを直感的に操作できることを目的として開発されている

モックについて

外観・ユーザーインターフェイスの振る舞いを模倣したハリボテみたいなもの
言い換えると、テストしたいオブジェクト(クラス・インスタンス)の中に別のオブジェクトのメソッドが呼び出されているものの振る舞いを模倣する

ソースコード例

chatGPTで生成してちょこちょこ変えました、chatGPT便利

UserService.java
public class UserService {
    private UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public User getUserById(int userId) {
        return userRepository.findById(userId);
    }
}
UserRepository.java
public interface UserRepository {
    User findById(int userId);
}
UserServiceTest.java
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class UserServiceTest {

    @Test
    public void testGetUserById() {
        // UserRepositoryのモックを作成
        UserRepository userRepository = Mockito.mock(UserRepository.class);

        // モックの振る舞いを設定
        User mockUser = new User(1, "John");
        Mockito.when(userRepository.findById(1)).thenReturn(mockUser);

        // UserServiceをモックのリポジトリと一緒にインスタンス化
        UserService userService = new UserService(userRepository);

        // テスト対象のメソッドを呼び出し
        User user = userService.getUserById(1);

        // 結果の検証
        assertEquals(1, user.getId());
        assertEquals("John", user.getName());
    }
}

最後に

モックを調べたらスタブとドライバ辺りも詳しく調べてみると良さそう

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?