【问题标题】:Clover instrumented tests with JUnit @Parameterized are failing with NoClassDefFound: junit/runner/TestRunListener使用 JUnit @Parameterized 的 Clover 检测测试因 NoClassDefFounderror 失败:junit/runner/Test RunListener
【发布时间】:2015-11-12 16:18:36
【问题描述】:

在本教程https://confluence.atlassian.com/display/CLOVER/Using+Clover+with+Maven+Tycho+Plugin 的帮助下,我设法构建了我们的测试,生成了覆盖率数据,但有一个小问题:

使用@Parameterized 注释运行的所有测试都失败了

java.lang.NoClassDefFound: junit/runner/TestRunListener

到目前为止,我发现异常来自三叶草注入的 JUnitParameterizedTestSniffer。

你知道如何解决这个问题吗?

我们正在使用 maven3、tycho 0.22、java7、junit 4.11。

【问题讨论】:

    标签: maven junit osgi tycho clover


    【解决方案1】:

    这听起来像包junit/runner 在测试的类加载器中不可见。如果您只从 JUnit 包中导入选定的包,就会发生这种情况。

    如果您改为使用 JUnit 包的 Require-Bundle,则不应再出现类加载问题。

    【讨论】:

    • 这里不是这样 - junit 在 Require-Bundle 部分。
    【解决方案2】:

    最后我在检测后使用这段代码解决了这个问题:

    <replace dir="${project.instrumented.dir}" token="new com_atlassian_clover.JUnitParameterizedTestSniffer()" value="com_atlassian_clover.TestNameSniffer.NULL_INSTANCE">
        <include name="**/*.java"/>
    </replace>
    

    也许它不是最漂亮的解决方案 - 但它工作得很好。 Atlassian Answears (https://answers.atlassian.com/questions/32508110/answers/32530869) 也提出了这个问题

    【讨论】:

      猜你喜欢
      • 2012-05-27
      • 2019-05-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      相关资源
      最近更新 更多