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%代码覆盖率.在我看来,这在大多数情况下都很重要.
如果您想合并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.
归档时间: |
|
查看次数: |
3748 次 |
最近记录: |