我有一个带有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为每种方法生成单独的测试报告?并且有某种方法可以很好地将它们组合在一起,以便它们在詹金斯上很好地展示?我会问是否可以将方法追加到现有的JUnit报表中,但是这些测试是要并行运行的,因此可能无济于事。
您可以使用<test>
代替,<batchtest>
因为这可以指定一个专用的输出文件。像这样:
<test name="${test}" outfile="TEST-${test}-${tests}"/>
从ant 1.8.2开始,这甚至允许您通过属性运行单独的测试方法methods
:
<test name="${test}" outfile="TEST-${test}-${tests}" methods="${tests}"/>
这可以帮助您摆脱自定义运行器。
Jenkins应该能够正确收集所有报告文件,并将它们合并到一个视图中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句