JUnit の @Spy アノテーションは、特に Mockito とともに使用する場合、実際のオブジェクトにスパイを作成するために適用されます。スパイは部分モックです。これは、他のメソッドの実際の動作を保持しながら、オブジェクトの一部のメソッドをモックできることを意味します。
@Spy アノテーションの一般的な使用法をいくつか示します:
部分モッキング:
@Spy private ListspyList = 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 アノテーションは、オブジェクトの残りの動作を変更せずに、実際のオブジェクトの特定の動作を制御または検証する必要がある場合に役立ちます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3