微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – PowerMock从@RunWith(PowerMockRunner.class)注释中抛出异常

我正在努力让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

从构建路径中删除这两个文件解决了问题.

原文地址:https://www.jb51.cc/java/438030.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐