我想Ant下运行Perl测试和产生类似的格式,以使得由蚂蚁JUnit task产生XML输出。如何运行Perl测试并将结果与Ant中的JUnit报告合并?
我意识到格式化程序TAP::Formatter::JUnit和TAP::Harness::JUnit存在,但由于我没有Perl的经验,我不知道从哪里开始。
我想Ant下运行Perl测试和产生类似的格式,以使得由蚂蚁JUnit task产生XML输出。如何运行Perl测试并将结果与Ant中的JUnit报告合并?
我意识到格式化程序TAP::Formatter::JUnit和TAP::Harness::JUnit存在,但由于我没有Perl的经验,我不知道从哪里开始。
如果您已经使用Test::More
等进行了测试,那么使用prove --formatter TAP::Formatter::JUnit
是最简单的方法。您不会更改任何Perl测试或代码,并且可以获得基于Java的工具使用的JUnit输出。
我们使用此设置哈德森,所以我们可以跟踪我们的测试,并从Hudson的内置工具,而不需要大量的扭曲得到很好的测试故障报告。我们的构建基于make
,但这与您的设置唯一的区别。
这意味着您应该能够将prove
作为外部任务运行,并且无需显着更改您的Ant工具即可获得好处,如果不明确。
根据您已安装Perl中,你可能会或可能不会有prove
。运行
perl -MTest::Harness -e'print "$Test::Harness::VERSION\n"'
看你有哪一个版本 - 3.00或更好的将有prove
;理想情况下,你应该安装3.23,以获得最佳的功能:
sudo cpan Test::Harness TAP::Formatter::JUnit
这将安装最新的测试::线束,TAP ::格式化:: JUnit和所有需要的先决条件。尝试用
prove --formatter TAP::Formatter::JUnit your/testsuite/directory/
外部进程,您应该在prove
运行结束时获得一个JUnit XML文件。如果这一切的作品,它
<target name="run">
<exec executable="prove">
<arg value="--formatter" />
<arg value="TAP::Formatter::JUnit" />
<arg path="your/testsuite/directory/" />
</exec>
(我相信这是运行外部程序正确蚂蚁语法,但我不是一个Ant专家加入到Ant。 )
我给了这个测试,并且“ant exec”不起作用,因为ant会将可执行文件看作要运行的文件。似乎有一种(折磨)的方式将命令行参数列出到文件中。对于我的项目,我的perl在一个使用Makefile运行测试的subdir中,所以我称之为“make -C perl test_junit”,并在我的Makefile中有证明命令。我将编辑上面的ant语法以使用args调用exec。 – spazm 2011-10-17 21:42:15
使用'line'而不是'value'会行得通,因为我们没有嵌入空间,但是如果我们在ant/xml的土地上,也可能会整个猪。此外,路径应该转化为适用于windows或* nux环境的路径。 'arg line =“ - formatter TAP :: Formatter :: JUnit your/testsuite/dir”' – spazm 2011-10-17 21:50:23
感谢您的修正! – 2012-08-17 23:07:58
一种替代TAP::Formatter::JUnit
是TAP::Harness::JUnit
。例如:
prove --harness TAP::Harness::JUnit t
我发现TAP::Formatter::JUnit
在Windows上没有安装,而TAP::Harness::JUnit
似乎无处不工作。
我觉得Perl程序员约100亿万倍更可能使用的makefile比蚂蚁。这可能是你没有收到任何答案的原因。作为一个人,我讨厌被迫处理XML,这不是为人类使用而设计的,而是为了程序的使用。 – tchrist 2010-11-04 11:54:43
感谢您对情况的解释。 反正,我一直在等待了一下,说不定会有有人在这里谁也面临这样我对我的回答如下扩大问题 – user405458 2010-11-04 13:53:25
- 让我知道这是足够的信息,或者如果你需要更多。 – 2011-09-01 22:20:24