【问题标题】:NoClassDefFoundError when using Powermock使用 Powermock 时出现 NoClassDefFoundError
【发布时间】:2011-07-14 15:04:12
【问题描述】:

我正在使用PowerMock 测试运行程序运行junit 测试用例。 我正在使用以下命令行来执行它:

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
...

我该如何解决?

【问题讨论】:

    标签: java unit-testing junit easymock powermock


    【解决方案1】:

    我现在刚刚解决了这个,当我添加@RunWith(PowerMockRunner.class)属性时,eclipse自动导入:

    import org.powermock.modules.junit4.legacy.PowerMockRunner;
    

    我需要做的就是将其更改为:

    import org.powermock.modules.junit4.PowerMockRunner;
    

    现在它可以很好地与JUnit 4.8.2 一起使用。

    第二个跑步者适用于使用旧版本的JUnit - 特别是4.3 和更早版本。

    【讨论】:

    • 非常感谢您的回答。对于使用 maven 的任何人,这也可能是由于使用了错误的 powermockito-junit 依赖项造成的。确保 junit4.0-4.3 包含 powermock-module-junit4-legacyjunit4.4 或更新版本包含 powermock-module-junit。检查this pom configuration
    【解决方案2】:

    here

    您可能使用了错误的 PowerMockRunner。有一个为 JUnit 4.4 及更高版本制作的跑步者,另一个为 JUnit 4.0-4.3 制作的跑步者(尽管后者也适用于 JUnit 4.4 的一些较旧的次要版本)。
    尝试从 org.powermock.modules.junit4.PowerMockRunner 切换到 org.powermock.modules.junit4.legacy.PowerMockRunner,反之亦然。查看getting started guide 了解如何在 maven 中进行配置。

    【讨论】:

      【解决方案3】:

      当您在使用 JUnit 4.X 或更高版本时导入旧版本的 PowerMockRunner.class 时会发生此异常,因为在使用 @RunWith 注释时无法运行此旧类。我通过用新版本替换旧的旧版本导入解决了这个问题。

      导入错误:

      import org.powermock.modules.junit4.legacy.PowerMockRunner;
      

      正确导入:

      import org.powermock.modules.junit4.PowerMockRunner;
      

      【讨论】:

        【解决方案4】:

        我解决了这个问题。我使用的是旧版本的 junit-4.0.jar。但是我仍然不明白为什么缺少类TestClassRunner,尤其是在包powermock-easymock-junit-1.4.8.zip(有junit-4.8.2.jar)中? junit-4.8.2.jar 也缺少类 TestClassRunner。

        【讨论】:

        • 这不是正确的解决方案 - 只是一种解决方法。看我的回答
        【解决方案5】:

        我正在使用 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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          • 2016-03-11
          • 2018-09-27
          • 1970-01-01
          相关资源
          最近更新 更多