PHPSpec和覆盖率报告

spa*_*mec 14 php continuous-integration code-coverage phpspec jenkins

有没有人知道从PHPSpec测试生成覆盖率报告的方法?

我想过xdebug,但据我所知它无法为jenkins生成报告.

Mar*_*rte 39

目前(1.4.0),它还不支持代码覆盖.很高兴听到您对此的反馈.以下是我对代码覆盖率的看法.

PHPSpec是一个BDD框架.如果您正在进行BDD,您可以在编写课程之前描述课程的行为.如果你这样做,你的类的相关行为都将被"测试"正确覆盖.

代码覆盖率工具和指标对遗留代码很有用(您编写的代码没有specs/tests).你可以使用这样的工具来尝试并开始你可以继续TDD的一个点,并且可以免受回归的影响.

一般来说这种做法是不是真的如描述行为第一(TDD)为有效.单个方法可能足够简单,可以响应多个必需行为.您知道,当您进行TDDing时,您会在此过程中继续重构,删除不需要的代码.你最终得到了10个规范(测试),这些规范命中了相同的代码行,所有代码都描述了不同的需要行为,这些行为对理解代码都很有用.

"测试"一词的一个问题是它让人们认为TDD是关于验证的.不是.这是关于沟通.StoryBDD是利益相关者之间的沟通,SpecBDD是类之间的沟通.简单,生活,足够的文档.

为确保您测试代码而进行的代码覆盖是一个谬误,最好是一个糟糕的指标.不幸的是,人们认为测试结构比测试行为更重要.这就是BDD诞生的原因,以帮助将重点放在正确的轨道上.确保测试这部分代码是假的,因为代码的那部分可以做多个事情,如果它被很好地重构了它应该.此外,您最终将测试访问器,修改器和构造函数等内容.

但我很乐意听取社区的意见.我可以看到代码覆盖率可能有用.此外,由于Sebastian Bergmann很好地将其从PHPUnit中模块化,我可以在PHPSpec中重复使用它.我希望你先写下你的规格.您可以免费获得相关行为的100%代码覆盖率.在我看来,这在大多数情况下都很重要.


bis*_*hop 9

使用PHPSpec代码覆盖范围扩展来生成三叶草.

如果您想合并PHPSpec和其他工具(例如)PHPUnit的覆盖数据,那么在合并模式下使用PHP_CodeCoverage输出格式和phpcov工具.

例子:

# phpspec.yml
extensions:
    - PhpSpec\Extension\CodeCoverageExtension

code_coverage:
    output: /tmp/coverage/phpspec.phpcoverage
    format: php

# phpunit.xml
<logging>
   <log type="coverage-php" target="/tmp/coverage/phpunit.phpcoverage" />
</logging>

# from the command line
phpcov merge --clover coverage.xml /tmp/coverage
Run Code Online (Sandbox Code Playgroud)

这将为您提供最终三叶草格式的两种工具的覆盖范围,适用于Jenkins.


小智 6

我认为代码覆盖生成器对于正在进行BDD样式测试的遗留系统是有用的,因为您将能够分辨出未测试的代码.我会感谢PHPSpec中的这样一个功能.