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
...
どうすれば修正できますか?
@RunWith(PowerMockRunner.class)
属性を追加すると、Eclipse
が自動的にインポートされて、これを解決しました:
import org.powermock.modules.junit4.legacy.PowerMockRunner;
私がする必要があるすべてはそれを次のように変更することです:
import org.powermock.modules.junit4.PowerMockRunner;
そして今、JUnit 4.8.2
。
2番目のランナーは、古いバージョンのJUnit
、具体的には4.3
以前。
この例外は、JRun 4.X以降のバージョンを使用しているときにPowerMockRunner.classのレガシーバージョンをインポートすると発生します。これは、このレガシークラスを@RunWithアノテーションとともに使用すると実行できないためです。古いバージョンのインポートを新しいバージョンに置き換えることで、この問題を解決しました。
不正なインポート:
import org.powermock.modules.junit4.legacy.PowerMockRunner;
正しいインポート:
import org.powermock.modules.junit4.PowerMockRunner;
私は問題を解決しました。古いバージョンのjunit-4.0.jarを使用しました。しかし、なぜpowermock-easymock-junit-1.4.8.Zipパッケージ(junit-4.8.2.jarがある)にTestClassRunnerクラスが欠落しているのか、それでも理解できません。 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>