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 注解非常有用。
以上是@spy 注解在 junit 测试中的使用的详细内容。更多信息请关注PHP中文网其他相关文章!