【问题标题】:Test Coverage in Jenkins for a Perl application在 Jenkins 中测试 Perl 应用程序的覆盖率
【发布时间】:2020-04-20 22:35:41
【问题描述】:

我刚刚在Perl, Code Coverage Example 中描述了一个很好的 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 中的电子邮件分机集成

【问题讨论】:

    标签: perl unit-testing jenkins code-coverage clover


    【解决方案1】:

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

    Jira 有一些关于integrating Devel::Cover into 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,但避免收集覆盖以证明自己。

    【讨论】:

    • 这是否意味着 PERL5OPT=-MDevel::Cover 证明 --timer --formatter=TAP::Formatter::JUnit -v -r 。 > perlapp_smoke.xml 2>perlapp_smoke.err 不起作用?由于它没有perl something_test 格式,而是有证明。
    • 谢谢,使用prove运行时如何获取HTML报告?
    • 想通了。 cover -test 生成了 HTML。谢谢!
    猜你喜欢
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2021-08-25
    • 2019-06-04
    • 1970-01-01
    • 2016-01-31
    相关资源
    最近更新 更多