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 eine teilweise Verspottung, 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 Verwendungen der @Spy-Annotation:
Teilweise Verspottung:
@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()); }
Ü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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3