我想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