当前位置: 首页 > 知识库问答 >
问题:

NoClassDef在使用PowerMock运行时发现错误

安泰平
2023-03-14

我得到了这个错误:

java.lang.NoClassDefFoundError: org/powermock/reflect/proxyframework/ClassLoaderRegisterProxyFramework
    at org.powermock.tests.utils.impl.AbstractCommonTestSuiteChunkerImpl.registerProxyframework(AbstractCommonTestSuiteChunkerImpl.java:101)
    at org.powermock.tests.utils.impl.AbstractCommonTestSuiteChunkerImpl.chunkClass(AbstractCommonTestSuiteChunkerImpl.java:114)
    at org.powermock.tests.utils.impl.AbstractCommonTestSuiteChunkerImpl.<init>(AbstractCommonTestSuiteChunkerImpl.java:60)
    at org.powermock.tests.utils.impl.AbstractCommonTestSuiteChunkerImpl.<init>(AbstractCommonTestSuiteChunkerImpl.java:54)
    at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.<init>(AbstractTestSuiteChunkerImpl.java:58)
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:49)
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:32)
    at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:34)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.ClassNotFoundException: org.powermock.reflect.proxyframework.ClassLoaderRegisterProxyFramework
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 25 more

我在pom中添加了这些依赖项。xml。我已经检查了stackflow的类似实现,并进行了干净的安装。我的项目正在生成文件,但运行测试时出现错误。我正在试着穿越日食。

    <!-- Power Mock dependencies -->
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-all</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-api-mockito</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-module-junit4</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-module-junit4-legacy</artifactId>
                <version>1.7.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-reflect</artifactId>
                <version>1.7.0</version>
            </dependency>
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-api-easymock</artifactId>
                <version>1.7.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.easymock</groupId>
                <artifactId>easymock</artifactId>
                <version>3.4</version>
                <scope>test</scope>
            </dependency>

我使用PowerMockRunner运行java类,并使用annotation InjectMock注入测试类。然后使用MockStatic方法模拟静态类。此外,我还添加了PrepareForTest注释,并添加了在该位置具有静态方法的类。

我更新了我的代码,并遵循了几个例子,但这个错误即将发生。我做错了什么?

My code is like this. 
 class A{ 
void static method testA(String str){ .... do something; }
}

 class B{ 
     testB(String s) 
                 { A.testA(s); 
     }
 }

现在,当我尝试使用PowerMockRunner在我的类A上运行测试用例时。我已经给出了testcase@prearefortest({A. class})@runwith(PowerMockRunner.class)的注释

共有1个答案

邓仲卿
2023-03-14

我在使用PowerMock 1.7.1时也看到了同样的错误。由于没有明确的依赖关系,maven引入了powermock core的1.6.5版。在powermock core的1.7.1版上添加了一个显式依赖项,为我修复了这个错误。

因此,您的解决方案应该是添加对powermock core 1.7.0版的明确依赖:

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-core</artifactId>
    <version>1.7.0</version>
    <scope>test</scope>
</dependency>
 类似资料:
  • ,而项目本身可以完美地运行eclipse IDE。 我尝试了相同问题的解决方案,但错误仍然存在。这是一个maven项目,pom.xml具有所有依赖项。 有人能帮我解决这个问题,或者建议一种通过eclipse IDE执行java-callgraph的方法来达到同样的目的吗?

  • 问题内容: 我尝试获取一些数据库值并将其显示在列表视图中。 这是我的代码: 我得到的RuntimeException 这是错误: 03-11 20:11:24.650:E / AndroidRuntime(887):java.lang.RuntimeException: 无法启动活动 ComponentInfo {com.NIRR.redistributionsystem / com.NIRR.r

  • 我正在使用docker compose容器部署3个项目:Eureka、Zuul服务和应用程序。以下是这些项目的配置: 尤里卡: 祖尔: 应用 当我做docker组装时,它正确地旋转容器,没有错误。然而,当我使用API网关调用RESTendpoint时,我得到了一个错误:com。netflix。祖尔。例外ZuuleException:转发错误

  • Powermock不是在Java1.5上运行吗?我有以下例外 在此方面的任何帮助都将不胜感激!! 我已经将power mock版本降级到1.5,现在我遇到了不同的异常。 我发现javassist-3.18.2-GA.jar是在Java1.6的基础上构建的,并用javassist-3.16.1-GA的旧版本取代了它。我现在开始了解奇怪的异常。我认为我没有JAR和it依赖的正确版本。有什么建议/想法吗

  • 问题内容: 我正在使用gradle作为JavaFX插件。即使在 distribution /下 构建和运行可执行文件之后,一切都可以完美运行,但只有一类: 为了多种目的,我创建了以下对象: 在IDE中运行该程序没问题,一切正常。但是,如果我构建并尝试运行.exe文件,则会得到以下-StackTrace: 我真的不明白。怎么可能找不到这个类,而我所有其他的类却都找不到呢? 我的build.gradl

  • 我已经有一个名为ant-jmeter-1.1.1的文件,位于路径 。 但是,当我从同一根目录运行ant命令时,出现了一个错误: BUILD 失败的 C:\apache-jmeter-2.13\apache-jmeter-2.13\extras\build.xml:87: 参考 C:\apache-jmeter-2.13\apache-jmeter-2.13\extras\ant-jmeter-1.