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

use*_*458 4 ant testing perl junit unit-testing

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

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

Joe*_*hon 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"'
Run Code Online (Sandbox Code Playgroud)

看看你有哪个版本--3.00或更高版本prove; 理想情况下,您应该安装3.23以获得最佳功能:

sudo cpan Test::Harness TAP::Formatter::JUnit
Run Code Online (Sandbox Code Playgroud)

这将安装最新的Test :: Harness,TAP :: Formatter :: JUnit以及所有必需的先决条件.尝试使用外部流程

prove --formatter TAP::Formatter::JUnit your/testsuite/directory/
Run Code Online (Sandbox Code Playgroud)

您应该在prove运行结束时获得JUnit XML文件.如果这一切都有效,请将其添加到Ant with

<target name="run">
<exec executable="prove">
  <arg value="--formatter" />
  <arg value="TAP::Formatter::JUnit" />
  <arg path="your/testsuite/directory/" />
</exec>
Run Code Online (Sandbox Code Playgroud)

"Exec"的Ant文档

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