2010-11-04 80 views
4

我想Ant下运行Perl测试和产生类似的格式,以使得由蚂蚁JUnit task产生XML输出。如何运行Perl测试并将结果与​​Ant中的JUnit报告合并?

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

+0

我觉得Perl程序员约100亿万倍更可能使用的makefile比蚂蚁。这可能是你没有收到任何答案的原因。作为一个人,我讨厌被迫处理XML,这不是为人类使用而设计的,而是为了程序的使用。 – tchrist 2010-11-04 11:54:43

+0

感谢您对情况的解释。 反正,我一直在等待了一下,说不定会有有人在这里谁也面临这样我对我的回答如下扩大问题 – user405458 2010-11-04 13:53:25

+0

- 让我知道这是足够的信息,或者如果你需要更多。 – 2011-09-01 22:20:24

回答

5

如果您已经使用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 documentation for "Exec"

(我相信这是运行外部程序正确蚂蚁语法,但我不是一个Ant专家加入到Ant。 )

+1

我给了这个测试,并且“ant exec”不起作用,因为ant会将可执行文件看作要运行的文件。似乎有一种(折磨)的方式将命令行参数列出到文件中。对于我的项目,我的perl在一个使用Makefile运行测试的subdir中,所以我称之为“make -C perl test_junit”,并在我的Makefile中有证明命令。我将编辑上面的ant语法以使用args调用exec。 – spazm 2011-10-17 21:42:15

+1

使用'line'而不是'value'会行得通,因为我们没有嵌入空间,但是如果我们在ant/xml的土地上,也可能会整个猪。此外,路径应该转化为适用于windows或* nux环境的路径。 'arg line =“ - formatter TAP :: Formatter :: JUnit your/testsuite/dir”' – spazm 2011-10-17 21:50:23

+0

感谢您的修正! – 2012-08-17 23:07:58

0

一种替代TAP::Formatter::JUnitTAP::Harness::JUnit。例如:

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

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

相关问题