尝试验证静态方法时出现 NotAMockException
NotAMockException when trying to verify a static method
我正在尝试验证在单元测试的特定配置中未调用静态方法。
因此我正在使用 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());
关于 class 中的测试方法,注释为
@RunWith(PowerMockRunner.class)
@PrepareForTest({MyClass.class})
我收到以下错误:org.mockito.exceptions.misusing.NotAMockException:
Argument passed to verify() is of type Class and is not a mock!
。
我做错了什么,如何解决?
谢谢
原来是a Powermock bug...
这里 the workaround 给任何可能感兴趣的人:
- 删除 gradle
中的第 testImplementation 'org.mockito:mockito-inline:2.13.0
行
- 创建一个由单行
mockito.mock-maker-class=mock-maker-inline
组成的src\test\resources\org\powermock\extensions\configuration.properties
文件
我没有 mockito-inline
而我有 mock-maker.inline
,我的设置是 org.powermock:powermock-api-mockito2:2.0.9
和 org.mockito:mockito-core:3.10.0
。
但是我发现 PowerMockito.verifyStatic
在下面使用 Mockito.verify
并且当检查 class 时 isMock
mockito 使用错误的 MockMaker
并且找不到mockedStatics
集合中的 class。
我用的时候
Mockito.mockStatic(MyClass.class);
而不是
PowerMockito.mockStatic(MyClass.class);
它开始对我有用。
我正在尝试验证在单元测试的特定配置中未调用静态方法。
因此我正在使用 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());
关于 class 中的测试方法,注释为
@RunWith(PowerMockRunner.class)
@PrepareForTest({MyClass.class})
我收到以下错误:org.mockito.exceptions.misusing.NotAMockException:
Argument passed to verify() is of type Class and is not a mock!
。
我做错了什么,如何解决?
谢谢
原来是a Powermock bug...
这里 the workaround 给任何可能感兴趣的人:
- 删除 gradle 中的第
- 创建一个由单行
mockito.mock-maker-class=mock-maker-inline
组成的
testImplementation 'org.mockito:mockito-inline:2.13.0
行
src\test\resources\org\powermock\extensions\configuration.properties
文件
我没有 mockito-inline
而我有 mock-maker.inline
,我的设置是 org.powermock:powermock-api-mockito2:2.0.9
和 org.mockito:mockito-core:3.10.0
。
但是我发现 PowerMockito.verifyStatic
在下面使用 Mockito.verify
并且当检查 class 时 isMock
mockito 使用错误的 MockMaker
并且找不到mockedStatics
集合中的 class。
我用的时候
Mockito.mockStatic(MyClass.class);
而不是
PowerMockito.mockStatic(MyClass.class);
它开始对我有用。