【问题标题】:Generating reports for junit when test methods run individually当测试方法单独运行时为 junit 生成报告
【发布时间】:2014-06-06 15:02:15
【问题描述】:

我有一个带有 JUnit 测试的 Java 项目,我使用 Ant 在 Jenkins 上运行。遵循各种在线教程,我使所有测试都可以单独运行。

我的 build.xml 看起来像这样:

<target name="run_junit" depends="compile, ensure-test-name"
                                  description="Run JUnit tests">
    <echo message="Execute Test" />
    <junit printsummary="withOutAndErr" fork="yes">
        <sysproperty key="tests" value="${tests}"/>
        <classpath>
            <path refid="classpath"/>
            <pathelement path="bin"/>
        </classpath>
      <formatter type="xml"/>
      <batchtest>
         <fileset dir="src">
             <include name="${test}.java"/>
         </fileset>
      </batchtest>
    </junit>
</target>

这与我自己的 Runner 和 Filter 类以及 @RunWith 注释一起,意味着我可以像这样在单独的类中运行单独的测试:

ant run_junit -Dtest=ClassWithTests -Dtests=testMethod

这在 Jenkins 中也可以正常工作,而且我还可以并行运行测试。我遇到的问题是每个类的报告在每个方法运行后都会被覆盖。

例如,上述命令将生成一个文件TEST-ClassWithTests.xml,其中包含有关testMethod 的结果和输出的信息。但是,如果我然后运行

ant run_junit -Dtest=ClassWithTests -Dtests=anotherTestMethod

TEST-ClassWithTests.xml 文件将被覆盖,并且仅包含有关 anotherTestMethod 的结果和输出的信息。



所以我的问题是:如何让 JUnit 为每种方法生成单独的测试报告?有没有办法很好地结合它们,以便它们在 Jenkins 上很好地显示?我会问是否可以将方法附加到现有的 JUnit 报告中,但这些测试是并行运行的,所以这可能没有帮助。

【问题讨论】:

  • 什么说明文件将被称为TEST-ClassWithTests.xml?找到它并弄清楚如何附加时间戳或其他东西,因此每次运行测试时都会应用一个唯一的时间戳等。
  • @CeilingGecko - 是的,我昨天和今天一直在寻找它,但没有运气。有关于将 .xml 文件连接到一份报告中的信息,但我找不到任何关于命名原始测试摘要的信息......
  • 你能用&lt;test&gt;元素代替&lt;batchtest&gt;吗?它允许您指定一个专用的测试结果文件(属性:outfile),甚至允许您选择要执行的测试方法(属性:methods

标签: java ant junit jenkins


【解决方案1】:

您可以使用&lt;test&gt; 而不是&lt;batchtest&gt;,因为这样可以指定专用的输出文件。像这样:

  <test name="${test}" outfile="TEST-${test}-${tests}"/>

从 ant 1.8.2 开始,这甚至允许您通过属性 methods 运行单独的测试方法:

  <test name="${test}" outfile="TEST-${test}-${tests}" methods="${tests}"/>

这可能会帮助您摆脱自定义跑步者。

Jenkins 应该能够正确收集所有报告文件并将它们组合到一个视图中。

【讨论】:

  • 哦,不知何故,我错过了 methods 属性这一事实,并花了很长时间试图让方法使用自定义过滤器和运行器运行。现在一切都像魅力一样,谢谢。
猜你喜欢
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 2018-02-08
相关资源
最近更新 更多