【问题标题】: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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 2014-08-30
      • 2014-02-02
      相关资源
      最近更新 更多