Die @Spy-Annotation in JUnit, insbesondere bei Verwendung mit Mockito, wird angewendet, um einen Spion für ein tatsächliches Objekt zu erstellen. Ein Spion ist ein teilweiser Mock, was bedeutet, dass Sie einige Methoden des Objekts verspotten können, während das tatsächliche Verhalten anderer Methoden erhalten bleibt.
Hier sind einige häufige Verwendungszwecke der @Spy-Annotation:
Teilweise Verspottung:
@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()); }
Überschreiben des realen Methodenverhaltens:
@Spy private MyClass myClass = new MyClass(); @Test public void testSpyWithMethodOverride() { Mockito.doReturn("Mocked Value").when(myClass).someMethod(); assertEquals("Mocked Value", myClass.someMethod()); }
Methodenaufrufe überprüfen:
@Spy private MyClass myClass = new MyClass(); @Test public void testMethodCallVerification() { myClass.someMethod(); Mockito.verify(myClass).someMethod(); }
Kombination mit @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()); }
Legacy-Code testen:
Zusammenfassend ist die @Spy-Annotation nützlich, wenn Sie bestimmte Verhaltensweisen eines tatsächlichen Objekts steuern oder überprüfen müssen, während das restliche Verhalten des Objekts unverändert bleibt.
Das obige ist der detaillierte Inhalt vonVerwendung der @spy-Annotation beim Junit-Testen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!