2010-05-25 21 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