2010-11-04 79 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似乎無處不工作。

相關問題