use*_*458 4 ant testing perl junit unit-testing
我想在Ant下运行Perl测试,并以类似于Ant JUnit任务生成的格式生成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"'
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)
(我相信这是运行外部程序的正确Ant语法,但我不是Ant专家.)