我想在Ant下运行Perl测试,并以类似于Ant JUnit task生成的格式生成XML输出。
我意识到格式化程序TAP::Formatter::JUnit和TAP::Harness::JUnit存在,但由于我没有Perl的经验,我不知道从哪里开始。
答案 0 :(得分:5)
如果您已经使用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"'
。运行
prove
看看你有哪个版本--3.00或更高版本将sudo cpan Test::Harness TAP::Formatter::JUnit
;理想情况下,您应该安装3.23以获得最佳功能:
prove --formatter TAP::Formatter::JUnit your/testsuite/directory/
这将安装最新的Test :: Harness,TAP :: Formatter :: JUnit以及所有必需的先决条件。使用
尝试外部流程prove
您应该在<target name="run">
<exec executable="prove">
<arg value="--formatter" />
<arg value="TAP::Formatter::JUnit" />
<arg path="your/testsuite/directory/" />
</exec>
运行结束时获取JUnit XML文件。如果这一切都有效,请将其添加到Ant with
{{1}}
(我相信这是运行外部程序的正确Ant语法,但我不是Ant专家。)
答案 1 :(得分:0)
TAP::Formatter::JUnit
的替代方案是TAP::Harness::JUnit
。例如:
prove --harness TAP::Harness::JUnit t
我发现TAP::Formatter::JUnit
没有在Windows上安装,而TAP::Harness::JUnit
似乎无处不在。