【问题标题】:Mock static method call using @RunWith(MockitoJUnitRunner.class)使用 @RunWith(MockitoJUnitRunner.class) 模拟静态方法调用
【发布时间】:2021-11-24 11:08:58
【问题描述】:
我正在使用@RunWith(MockitoJUnitRunner.class)。我需要模拟一个静态方法调用MosConfigFactory.getInstance()。我不能使用@RunWith(PowerMockRunner.class)。如何使用 MockitoJUnitRunner 模拟静态方法调用?
【问题讨论】:
标签:
junit
mockito
powermock
powermockito
powermockrunner
【解决方案1】:
你可以使用 mockito 内联
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>3.8.0</version>
<scope>test</scope>
</dependency>
示例代码:
assertEquals("foo", Foo.method());
try (MockedStatic mocked = mockStatic(Foo.class)) {
mocked.when(Foo::method).thenReturn("bar");
assertEquals("bar", Foo.method());
mocked.verify(Foo::method);
}
assertEquals("foo", Foo.method());
更多信息设置on Ofiicial Documentation
这也是默认关闭的,根据官方文档you need to turn it on:
这个模拟生成器默认是关闭的,因为它基于
需要更多反馈的完全不同的模拟机制
来自社区。它可以由 mockito 显式激活
扩展机制,只需在类路径中创建一个文件
/mockito-extensions/org.mockito.plugins.MockMaker 包含该值
mock-maker-inline。