【发布时间】:2018-04-03 07:00:50
【问题描述】:
我使用 Testng & Mockito & Powermock(不使用 Junit 3 或 4)来测试我的类 JeebiesKwCheckUtil 其中包含静态和最终,我已经将代码和 pom 作为 Powermock 介绍,但它仍然不起作用无论如何,总是显示org.powermock.api.mockito.ClassNotPreparedException,它让我发疯了......
代码:
我把它写成 Powermock&mockito Intro。 Link在这里;
@PrepareForTest(JeebiesKwCheckUtil.class)
public class JeebiesKwCheckUtilTest {
@Test
public void testMethodA() {
PowerMockito.mockStatic(JeebiesKwCheckUtil.class); // Exception here
// MethodA use stticMethodB
Mockito.when(JeebiesKwCheckUtil.staticMethodB).thenReturn(Result);
Assert.assertEquals(JeebiesKwCheckUtil.MethodA......)
}
}
Pom 文件: 这里有 4 个 Maven Jar,Powermock 的版本是 1.7.1
- 前两个是 PowerMock 的 -> Mockito-2-Maven
- 第三个是Testng(版本6.13.1 > 6.9.10)->Testng-Version-Require
- 第四个是 Mockito (2.8.9 版) -> Mockito-Version-Require
<properties>
<powermock.version>1.7.1</powermock.version>
</properties>
<dependencies>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-testng</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.8.9</version>
<scope>test</scope>
</dependency>
</dependencies>
错误:
org.powermock.api.mockito.ClassNotPreparedException:
[Ljava.lang.Object;@29df4d43
The class com.yidian.serving.util.JeebiesKwCheckUtil not prepared for test.
at org.powermock.api.mockito.expectation.reporter.MockitoPowerMockReporter.classNotPrepared(MockitoPowerMockReporter.java:32)
at org.powermock.api.mockito.internal.mockcreation.MockTypeValidatorFactory$DefaultMockTypeValidator.validate(MockTypeValidatorFactory.java:38)
at org.powermock.api.mockito.internal.mockcreation.AbstractMockCreator.validateType(AbstractMockCreator.java:10)
at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.createMock(DefaultMockCreator.java:56)
at org.powermock.api.mockito.internal.mockcreation.DefaultMockCreator.mock(DefaultMockCreator.java:46)
at org.powermock.api.mockito.PowerMockito.mockStatic(PowerMockito.java:73)
at com.yidian.serving.util.JeebiesKwCheckUtilTest.testCheckSensitiveWord(JeebiesKwCheckUtilTest.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:571)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:707)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:979)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1187)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1116)
at org.testng.TestNG.runSuites(TestNG.java:1028)
at org.testng.TestNG.run(TestNG.java:996)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)
谁能给我一个解决方案或建议?非常感谢~
【问题讨论】:
标签: java mockito testng powermock powermockito