尝试验证静态方法时出现 NotAMockException

Enz*_*ion 5 java android unit-testing powermockito

我试图在单元测试中验证在特定配置中未调用静态方法。

因此,我使用 PowerMock ( powermock-core:2.0.4& powermock-module-junit4:2.0.4) 及其 Mockito API ( powermock-api-mockito2:2.0.4)。

做的时候

PowerMockito.mockStatic(MyClass.class);

serviceUnderTest.methodThatShouldNotCallStaticMethod(arg1, arg2); //service not of type MyClass of course

PowerMockito.verifyStatic(MyClass.class, never());
MyClass.staticMethod(any(), any());
Run Code Online (Sandbox Code Playgroud)

在用注释的类中的测试方法上

@RunWith(PowerMockRunner.class)
@PrepareForTest({MyClass.class})
Run Code Online (Sandbox Code Playgroud)

我得到以下错误:org.mockito.exceptions.misusing.NotAMockException: Argument passed to verify() is of type Class and is not a mock!

我做错了什么以及如何解决?

谢谢

Enz*_*ion 7

原来是Powermock的bug ...

这是任何可能感兴趣的人的解决方法

  1. testImplementation 'org.mockito:mockito-inline:2.13.0在 gradle 中删除“行”
  2. 创建src\test\resources\org\powermock\extensions\configuration.properties由单行组成的文件mockito.mock-maker-class=mock-maker-inline

  • 如果您在 src/test/resources/mockito-extensions 下已有文件 org.mockito.plugins.MockMaker,请记住将其删除! (2认同)