我正在使用junit
测试运行器运行PowerMock
测试用例。
我正在使用以下命令行来执行它:
java -cp .:junit-4.9b2.jar:easymock-3.0.jar:powermock-easymock-1.4.8-full.jar org.junit.runner.JUnitCore SampleTest
这样做时,我收到此错误:
initializationError(SampleTest)
java.lang.NoClassDefFoundError: org/junit/internal/runners/TestClassRunner
...
我该如何解决?
答案 0 :(得分:76)
我刚刚解决了这个问题,当我添加@RunWith(PowerMockRunner.class)
属性时,eclipse
自动导入:
import org.powermock.modules.junit4.legacy.PowerMockRunner;
我需要做的就是将其改为:
import org.powermock.modules.junit4.PowerMockRunner;
现在它适用于JUnit 4.8.2
。
第二名选手适用于较早版本的JUnit
- 特别是4.3
及更早版本。
答案 1 :(得分:6)
请参阅here
你可能使用了错误的PowerMockRunner。有一个为JUnit 4.4及以上版本制作的跑步者和为JUnit 4.0-4.3制作的第二个跑步者(虽然后者也适用于JUnit 4.4的一些较旧的次要版本)。 尝试从org.powermock.modules.junit4.PowerMockRunner切换到org.powermock.modules.junit4.legacy.PowerMockRunner,反之亦然。查看getting started guide以了解如何在maven中配置它。
答案 2 :(得分:2)
当您使用JUnit 4.X或更高版本导入PowerMockRunner.class的旧版本时,会发生此异常,因为使用@RunWith批注将无法运行该旧类。我已通过将旧的旧版本导入替换为新版本来解决此问题。
导入不正确:
import org.powermock.modules.junit4.legacy.PowerMockRunner;
正确导入:
import org.powermock.modules.junit4.PowerMockRunner;
答案 3 :(得分:0)
我解决了这个问题。我用旧版junit-4.0.jar。但我仍然不明白为什么缺少类TestClassRunner,特别是在包powermock-easymock-junit-1.4.8.zip(有junit-4.8.2.jar)? junit-4.8.2.jar也缺少TestClassRunner类。
答案 4 :(得分:0)
我正在使用JUnit 4.0-4.3,并且更新了我的maven依赖项以使用powermockito 2.0.0-beta.5版本。它刚刚开始工作。
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.0-beta.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.0-beta.5</version>
<scope>test</scope>
</dependency>