java - Mockito 在 void 方法调用上打印消息

标签 java mockito

我有一个服务 void我 mock 过的方法。 我想登录或 system.out.println("..")当 void 方法被击中时。

public class MyService {

public void call(){
// do something.
}
}

private MyService mySerivce = mock(MyService.class);

我想从调用方法主体记录一条消息,我该如何模拟?就像我可以使用非空方法的答案一样。

verify(myService, times(1)).call();

myService.call();

verify(my)

最佳答案

使用spy并在运行测试后验证其状态(说实话 - 你也可以使用mock来做到这一点,但是使用spy你如果需要的话可以测试真实的物体):

//Given
MyService service = new MyService();
MyService serviceSpy = Mockito.spy(service);

//When
serviceSpy.call();

//Then
long count = Mockito.mockingDetails(serviceSpy)
      .getInvocations()
      .stream()
      .filter(i -> i.toString().contains("service.call()"))
      .count();

if (count > 0)
    System.out.println("Method was called " + count + " times.");
else
    System.out.println("Method wasn't called at all.");

//TODO: of course this isn't correct test because it hasn't any assertions.

关于java - Mockito 在 void 方法调用上打印消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57208077/

相关文章:

Java正则表达式替换除少数字符组合之外的所有字符

java - 将代码库从 SimpleMailMessage 更改为 MimeMessage 后单元测试中断

java - Mockito 验证对模拟对象的最后一次调用

java - groovy中的数据类型与java类似吗?

java - 如何在 java 中打印此模式我不知道如何

android - 如何在 Android Studio 的单元测试中使用 Mockito/Hamcrest

unit-testing - 了解如何使用 Mockito doReturn/when 对返回类型为 void 的方法进行 JUnit 测试

java - 如何模拟私有(private)静态属性,特别是 ResourceBundle

java - JMH - 为什么 JIT 不消除我的死代码

java - 将 Zip 转换为存储压缩