簡體   English   中英

使用Powermock時NoClassDefFoundError

[英]NoClassDefFoundError when using Powermock

我正在使用PowerMock測試運行器運行junit測試用例。 我正在使用以下命令行來執行它:

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
...

我該如何解決?

我剛剛解決了這個問題,當我添加@RunWith(PowerMockRunner.class)屬性時, eclipse自動導入:

import org.powermock.modules.junit4.legacy.PowerMockRunner;

我需要做的就是改變它:

import org.powermock.modules.junit4.PowerMockRunner;

現在它適用於JUnit 4.8.2

第二個運行器用於運行舊版本的JUnit - 特別是4.3及更早版本。

看到這里

您可能使用了錯誤的PowerMockRunner。 有一個為JUnit 4.4及以上版本制作的跑步者和為JUnit 4.0-4.3制作的第二個跑步者(盡管后者也適用於JUnit 4.4的一些較舊的次要版本)。
嘗試從org.powermock.modules.junit4.PowerMockRunner切換到org.powermock.modules.junit4.legacy.PowerMockRunner,反之亦然。 查看入門指南 ,了解如何在maven中配置它。

使用JUnit 4.X或更高版本導入舊版PowerMockRunner.class時會發生此異常,因為在將此類遺留類與@RunWith批注一起使用時無法運行。 我通過用新版本替換舊的舊版本導入解決了這個問題。

導入錯誤:

import org.powermock.modules.junit4.legacy.PowerMockRunner;

正確導入:

import org.powermock.modules.junit4.PowerMockRunner;

我解決了這個問題。 我用舊版junit-4.0.jar。 但我仍然不明白為什么缺少類TestClassRunner,特別是在包powermock-easymock-junit-1.4.8.zip(有junit-4.8.2.jar)? junit-4.8.2.jar也缺少類TestClassRunner。

我正在使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM