我使用Mockito和mockito内嵌来模拟静态方法。我试图将doNothing
或类似的行为应用于静态的void方法。下面是解决办法,但是我认为应该有一种更方便的方法来用更少的代码来实现这一点。
try (MockedStatic<UtilCalss> mock = Mockito.mockStatic(UtilCalss.class)) {
mock.when(() -> UtilCalss.staticMethod(any()))
.thenAnswer((Answer<Void>) invocation -> null);
}
如果这是一种非静态方法,我们可以简单地这样做:
doNothing().when(mock).nonStaticMethod(any());
但我也想对静态方法做同样的处理。
发布于 2020-11-13 21:04:49
你不需要在那个电话上存根。
doNothing
是在模拟中调用的void
方法的默认行为。
发布于 2021-05-08 19:20:36
mockito内联包括mockito核心:
<!-- Mockito-inline include Mockito-code in same version - Useful for Mock static method -->
<!-- See https://asolntsev.github.io/en/2020/07/11/mockito-static-methods/ -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>3.6.28</version>
</dependency>
如果您正在测试静态方法,则返回nothing,=>不使用mock.when =>,只需执行要测试和验证的方法:
try (MockedStatic<UtilClass> mock = Mockito.mockStatic(UtilClass.class)) {
mock.when(() -> UtilClass.staticMethod(any()))
.thenAnswer((Answer<Void>) invocation -> null);
App.main(null); // example : I'm testing main method from App class
mock.verify(UtilClass::staticMethod); // I verify static method from UtilClass was called.
}
resources:
https://stackoverflow.com/questions/64717683
复制相似问题