📅  最后修改于: 2023-12-03 15:31:31.594000             🧑  作者: Mango
在进行 Java 单元测试的过程中,对于一些依赖其他模块或服务的方法,我们需要使用 Mockito 进行 mock 替换,以避免测试过程中对于外部服务的依赖。在这个过程中常常需要打印一些日志或者信息以方便 debug,本文将介绍如何在 Mockito mock 方法的同时打印输出信息。
在使用 Mockito 进行 mock 的时候,可以使用 Answer
对象来进行一些进一步的操作,包括打印输出信息。例如,我们有以下一个待测试的 service:
public class MyService {
public void myMethod(String arg) {
System.out.println("Original method: " + arg);
}
}
我们需要使用 Mockito 进行替换,可以按照如下方式进行:
@RunWith(MockitoJUnitRunner.class)
public class MyServiceTest {
@Mock
private MyService myService;
@Test
public void testMyMethod() {
// mock 方法并打印输出
doAnswer(invocationOnMock -> {
Object[] args = invocationOnMock.getArguments();
System.out.println("Mocked method: " + args[0]);
return null;
}).when(myService).myMethod(anyString());
myService.myMethod("test");
// 验证输出
verify(myService).myMethod("test");
}
}
代码中我们创建了一个 MyServiceTest 的测试类,使用 @Mock
注解创建了一个 MyService 的 mock 对象:private MyService myService;
。在 testMyMethod 方法中,我们使用 doAnswer
方法来模拟方法调用,并在模拟方法调用中打印出入参:Object[] args = invocationOnMock.getArguments();System.out.println("Mocked method: " + args[0]);
。最后,我们使用 verify 方法来验证方法是否被正确调用。在本例子中,会输出以下信息:
Mocked method: test
通过使用 Mockito 的 Answer 对象,我们可以在 mock 方法的同时打印输出信息,方便测试和 debug。以上为 mockito print 调用方法的介绍。