如何在Selenium执行时获得Perl CGI脚本的代码覆盖率?

时间:2010-05-25 00:38:41

标签: perl selenium cgi code-coverage epic

我正在使用Eclipse EPIC IDE编写一些Perl CGI脚本,这些脚本调用了我也写过的一些Perl模块。 EPIC IDE允许我配置运行我的CGI脚本的Perl CGI“运行配置”。然后我设置了Selenium,我的一个单元测试文件运行一些Selenium命令来运行我的cgi脚本。但是Module :: Build dispatch'testcover'的覆盖率报告并未显示我的任何模块代码已被执行。它是由我的cgi脚本执行的,但我猜CGI脚本是手动运行的,并没有直接由我的单元测试文件执行,所以也许这就是为什么覆盖范围没有得到识别。有没有办法做到这一点,所以我可以以某种方式集成Selenium和单元测试文件和代码覆盖?

1 个答案:

答案 0 :(得分:3)

我不熟悉Selenium或EPIC,但有一种解决方法(除非有人提供更多本机解决方案)只需在运行配置命令行中包含“-MDevel :: Cover”即可。

更糟糕的是,在BEGIN {}块中添加一些条件逻辑 - 基于某些selenium环境变量 - 有条件地use Devel::Cover

<强>更新

应该可以使用-MDevel::Cover=-silent,1

来抑制Devel :: Cover的输出
$ 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;}'

$