2010-05-25 51 views
4

我正在使用Eclipse EPIC IDE編寫一些Perl CGI腳本,這些腳本調用了我也寫過的一些Perl模塊。 EPIC IDE允許我配置運行我的CGI腳本的Perl CGI「運行配置」。然後我創建了Selenium,我的一個單元測試文件運行了一些Selenium命令,通過它的步調運行我的cgi腳本。但是Module :: Build dispatch'testcover'的覆蓋報告並沒有顯示我的任何模塊代碼已經被執行。它已經被我的CGI腳本執行了,但我猜CGI腳本是手動運行的,並不是由我的單元測試文件直接執行的,所以也許這就是爲什麼覆蓋不被識別的原因。有沒有辦法做到這一點,所以我可以將Selenium和單元測試文件和代碼覆蓋整合到一起?當由Selenium執行時,如何獲得Perl CGI腳本的代碼覆蓋率?

+0

我想我想通了 - 看到我更新的答案 – DVK 2010-05-26 16:34:39

+1

+1讓我學到東西新和使用Devel ::封面:) – DVK 2010-05-26 16:35:28

回答

3

我並不熟悉Selenium或EPIC,但是一種解決方法(除非/直到有人帶有更多的本機解決方案)才簡單地在運行配置命令行中包含「-MDevel :: Cover」。

程度較重,添加一些條件邏輯在BEGIN {}阻止 - 基於一些硒環境變量 - 有條件確實use Devel::Cover

UPDATE

應該能夠抑制從輸出傑韋利::封面使用-MDevel::Cover=-silent,1

$ perl5.8 -MDevel::Cover -e '{1;}' 
Devel::Cover 0.64: Collecting coverage data for branch, blah 
Selecting packages matching: 
Ignoring packages matching: 
blah, blah, blah 
---------------------------- ------ ------ ------ ------ ------ ------ ------ 
File       stmt bran cond sub pod time total 
---------------------------- ------ ------ ------ ------ ------ ------ ------ 
Total       n/a n/a n/a n/a n/a n/a n/a 
---------------------------- ------ ------ ------ ------ ------ ------ ------ 


$ perl5.8 -MDevel::Cover=-silent,1 -e '{1;}' 

$ 
+0

我試了兩種解決方案,似乎都沒有工作。當我將-MDevel :: Cover放入cgi run配置的命令行時,該新模塊在stdout上生成了一些亂碼的CGI腳本頭文本。當我添加使用Devel :: Cover到我的使用硒來運行cgi腳本的單元測試文件時,它給了我類似的結果,就像我之前從Module :: Build派發測試用例一樣...沒有我知道的模塊的覆蓋cgi腳本正在調用例程。 – 2010-05-25 02:26:03

+0

@Kurt - 我不確定您是否可以用某種可用的方式禁用Devel :: Cover的IO,但我可以檢查... – DVK 2010-05-25 02:56:14

+1

@Kurt - 嘗試'-MDevel :: Cover = - slient',請 – DVK 2010-05-25 03:00:01