最終更新日:2022‐04-10
最近Mockitoを触ることになったのですが、日本語のドキュメントが少ないので備忘録を残すことにしました。
ポイント
@Mockアノテーション
モックとして作成したいクラスを指定します。
@InjectMocksアノテーション
作成したMockのインスタンスを挿入するクラスを指定します。インスタンスはNewしなくても自動的に生成されます。
以下のコードでMockがNewされます。MockitoAnnotations#initMocksは廃止予定となっているようなのでopenMocksを使用しましょう。
MockitoAnnotations.openMocks(this);
サンプルコード
package sandbox;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import jp.eaglet.code.sandbox.MainController;
import jp.eaglet.code.sandbox.User;
import jp.eaglet.code.sandbox.UserRepository;
class MainControllerTest {
@Mock
UserRepository userRepository;
@InjectMocks
MainController mainController;
@BeforeAll
static void setUpBeforeClass() throws Exception {
}
@AfterAll
static void tearDownAfterClass() throws Exception {
}
@BeforeEach
void setUp() throws Exception {
MockitoAnnotations.openMocks(this);
}
@AfterEach
void tearDown() throws Exception {
}
@Test
void testAddNewUser() {
String name="hoge";
String email = "fuga@test.co.jp";
String ret = mainController.addNewUser(name, email);
assertEquals("Saved",ret);
}
@Test
void testGetAllUsers() {
Iterable<User> ret = mainController.getAllUsers();
assertNotNull(ret);
}
}
技術の進化についていけていないシステムエンジニア。浅く広く、何でも大体はこなせるエンジニアで重宝されてる(つもり)。でもやっぱり特化した武器欲しい。
備忘録として記事を投稿していますが、少しでも誰かの助けになればと思います。
最近はプロジェクトでReact(TypeScript )を触っています。
趣味でギター弾きます。