如何运行Perl测试并将结果与​​Ant中的JUnit Reports合并?

时间:2010-11-04 10:23:34

标签: perl unit-testing testing ant junit

我想在Ant下运行Perl测试,并以类似于Ant JUnit task生成的格式生成XML输出。

我意识到格式化程序TAP::Formatter::JUnitTAP::Harness::JUnit存在,但由于我没有Perl的经验,我不知道从哪里开始。

2 个答案:

答案 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 documentation for "Exec"

(我相信这是运行外部程序的正确Ant语法,但我不是Ant专家。)

答案 1 :(得分:0)

TAP::Formatter::JUnit的替代方案是TAP::Harness::JUnit。例如:

prove --harness TAP::Harness::JUnit t

我发现TAP::Formatter::JUnit没有在Windows上安装,而TAP::Harness::JUnit似乎无处不在。