2012-03-04 12 views
4

私のアプリケーションでPowerMockitoを動作させようとしています。ライブラリをビルドパスに追加しました。私は、次のテストクラスを持っている:私はテストを実行しようとするとPowerMock @RunWith(PowerMockRunner.class)から例外をスローする注釈

package client.controller; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.powermock.core.classloader.annotations.PrepareForTest; 
import org.powermock.modules.junit4.PowerMockRunner; 

@RunWith(PowerMockRunner.class) 
@PrepareForTest(System.class) 
public class SampleTest 
{ 
    @Test 
    public void test() 
    { 

    } 
} 

は、私は次の例外を取得:

java.lang.NoClassDefFoundError: org/junit/internal/runners/TestClassRunner 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at org.powermock.modules.junit4.legacy.PowerMockRunner.<init>(PowerMockRunner.java:24) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31) 
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
Caused by: java.lang.ClassNotFoundException: org.junit.internal.runners.TestClassRunner 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 31 more 

PowerMock FAQによると、私は、従来のパッケージを使用してみてください。私はやった、と私はまだ同じ例外を取得しています。何か案は?

+1

は、そのJARですクラスパスに 'org.junit.internal.runners.TestClassRunner'が含まれていますか? –

+0

JUnit 4.5では削除された/名前が変更された可能性があります。 –

+0

私はJUnit 4.8.2を使用しています。どのようにクラスパスをチェックするのですか?そのパッケージをインポートしようとすると、Eclipseは解決できないと私に伝えます。 – LandonSchropp

答えて

3

PowerMockを誤ってビルドに追加していたようです。

Archive for required library: 'lib/powermock-mockito-junit-1.4.11 4/powermock-release-junit-without-mock-framework-1.4.11.pom' in project 'Test' cannot be read or is not a valid ZIP file Test  Build path Build Path Problem 
Archive for required library: 'lib/powermock-mockito-junit-1.4.11 4/powermock-release-without-test-and-mock-framework-1.4.11.pom' in project 'Test' cannot be read or is not a valid ZIP file Test  Build path Build Path Problem 

問題を修正し、ビルドパスからこれらの2つのファイルを削除する:問題は、Eclipseで表示を通じて私が見たとき、私は次を発見しました。私にとって

0

混乱は、JUnitのバージョンで

明らか4.12> 4.4、JUnitのバージョン管理を開始しました。

だからバージョン> 4.4のために、あなたの代わりにpowermock-module-junit4-legacypowermock-module-junit4

を使用する必要があります。サイドノートとして

、後で私は...代わりに進展だpowermock-api-mockito

Mavenの指示をpowermock-api-mockito2

を使用する必要が出た: https://github.com/powermock/powermock/wiki/Mockito-Maven

関連する問題