📜  java mockito print 调用方法 - Java (1)

📅  最后修改于: 2023-12-03 15:31:31.594000             🧑  作者: Mango

Java Mockito Print 调用方法

介绍

在进行 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 调用方法的介绍。