我想在 Ant 下运行 Perl 测试并以与 Ant JUnit task 生成的格式类似的格式生成 XML 输出.
我意识到格式化程序 TAP::Formatter::JUnit和 TAP::Harness::JUnit存在,但由于我没有使用 Perl 的经验,我不知道从哪里开始。
最佳答案
如果您已经使用 Test::More
等进行测试,那么使用 prove --formatter TAP::Formatter::JUnit
是最简单的方法.您无需更改任何 Perl 测试或代码,您将获得基于 Java 的工具使用的 JUnit 输出。
我们将此设置与 Hudson 一起使用,这样我们就可以跟踪我们的测试并根据需要从 Hudson 的内置工具中获得良好的测试失败报告,而无需进行大量扭曲。我们的构建是基于 make
的,但这是与您的设置唯一真正的区别。
这意味着您应该能够将 prove
作为外部任务运行并获得好处,而无需显着更改 Ant 工具(如果不清楚的话)。
根据您安装的 Perl,您可能有也可能没有prove
。运行
perl -MTest::Harness -e'print "$Test::Harness::VERSION\n"'
查看您的版本 - 3.00 或更高版本将有证明
;理想情况下,您应该安装 3.23 以获得最佳功能:
sudo cpan Test::Harness TAP::Formatter::JUnit
这会安装最新的 Test::Harness、TAP::Formatter::JUnit 和所有需要的先决条件。使用
尝试外部过程prove --formatter TAP::Formatter::JUnit your/testsuite/directory/
您应该在 prove
运行结束时得到一个 JUnit XML 文件。如果一切正常,将它添加到 Ant 中
<target name="run">
<exec executable="prove">
<arg value="--formatter" />
<arg value="TAP::Formatter::JUnit" />
<arg path="your/testsuite/directory/" />
</exec>
(我相信这是运行外部程序的正确 Ant 语法,但我不是 Ant 专家。)
关于perl - 我如何运行 Perl 测试并将结果与 Ant 中的 JUnit 报告合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4095680/