0

我刚刚在Perl,代码覆盖示例中描述了一个出色的 Perl 测试覆盖示例

但是这需要 Module::Build ,现在如果我有没有 Module::Build 工具的现有 Perl 应用程序怎么办,有没有办法获得单元或功能测试的测试覆盖率?

我在看 :

Clean up from previous test run (optional)
  cover -delete

  #Test run with coverage instrumentation
  PERL5OPT=-MDevel::Cover prove -r t

  #Collect covered and caller information
  #  Run this _before_ running "cover"
  #  Don't run with Devel::Cover enabled
  covered runs
    - or e.g. -
  covered runs --rex_skip_test_file='/your-prove-file.pl$/' \
          --rex_skip_source_file='{app_cpan_deps/}'

  #Post process to generate covered database
  cover -report Html_basic


  %perl -d:Coverage -Iblib/lib test.pl

但这似乎表明运行应用程序时的代码覆盖率。

我希望能够获得与 Clover 或 Cobertura 兼容的输出,因此我可以将它与 Jenkins 中的电子邮件分机集成

4

1 回答 1

3

Task::Jenkins可能会有所帮助。它包含有关如何通过 Jenkins 发布 Devel::Cover HTML 报告的说明,以及有关使其他 Perl 工具适应 Jenkins 的信息。

Jira 有一些关于将 Devel::Cover 集成到 Jenkins中的说明。

要获得任何 Perl 进程(测试、应用程序、服务器等)的代码覆盖率,您需要设置PERL5OPT环境变量-MDevel::Cover,就像放入use Devel::Cover程序一样。如果您执行测试的命令是,perl something_test那么您将运行PERL5OPT=-MDevel::Cover perl something_test.

如果您正在使用prove,请使用HARNESS_PERL_SWITCHES=-MDevel::Cover prove <normal prove arguments>。这告诉在运行测试时prove加载Devel::Cover,但避免收集覆盖以证明自己。

于 2013-03-14T02:10:45.063 回答