JUnit の @Spy アノテーションは、特に Mockito と一緒に使用する場合、実際のオブジェクトにスパイを作成するために適用されます。スパイは部分的なモックです。これは、他のメソッドの実際の動作を保持しながら、オブジェクトの一部のメソッドをモックできることを意味します。
@Spy アノテーションの一般的な使用法をいくつか示します:
部分的なモック:
@Spy private List<String> spyList = new ArrayList<>(); @Test public void testSpy() { spyList.add("Mockito"); Mockito.verify(spyList).add("Mockito"); assertEquals(1, spyList.size()); Mockito.doReturn(100).when(spyList).size(); assertEquals(100, spyList.size()); }
実際のメソッドの動作のオーバーライド:
@Spy private MyClass myClass = new MyClass(); @Test public void testSpyWithMethodOverride() { Mockito.doReturn("Mocked Value").when(myClass).someMethod(); assertEquals("Mocked Value", myClass.someMethod()); }
メソッド呼び出しの検証:
@Spy private MyClass myClass = new MyClass(); @Test public void testMethodCallVerification() { myClass.someMethod(); Mockito.verify(myClass).someMethod(); }
@InjectMocks との組み合わせ:
@Spy private MyDependency dependency; @InjectMocks private MyService service; @Test public void testService() { Mockito.doReturn("Mocked Result").when(dependency).doSomething(); assertEquals("Mocked Result", service.performAction()); }
レガシー コードのテスト:
要約すると、@Spy アノテーションは、オブジェクトの残りの動作を変更せずに、実際のオブジェクトの特定の動作を制御または検証する必要がある場合に役立ちます。
以上がjunit テストでの @spy アノテーションの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。