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