0

我正在使用@RunWith(MockitoJUnitRunner.class). 我需要模拟一个静态方法调用,MosConfigFactory.getInstance(). 我不能用 @RunWith(PowerMockRunner.class)。如何使用 MockitoJUnitRunner 模拟静态方法调用?

4

1 回答 1

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());

有关官方文档的更多信息设置

这也是默认关闭的,根据官方文档,您需要将其打开

这个 mock maker 默认是关闭的,因为它基于完全不同的 mocking 机制,需要来自社区的更多反馈。它可以通过 mockito 扩展机制显式激活,只需在类路径中创建一个文件 /mockito-extensions/org.mockito.plugins.MockMaker 包含值 mock-maker-inline。

于 2021-11-28T20:20:49.630 回答