我正在努力让powermockito使用我的应用程序.我已将库添加到构建路径中.我有以下测试类:
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.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.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,我应该尝试使用旧版程序包.我做了,我仍然得到同样的例外.有任何想法吗?
最佳答案
看起来我正在错误地将PowerMock添加到构建中.当我查看Eclipse中的问题视图时,我发现了以下内容:
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