关于PHPUnit代码覆盖率的很多概念,官方文档中讲的十分清楚,本文仅就部分语焉不详的细节做些补充。
虽然phpunit.xml不是必需,但每次都输入完整的命令很不方便,所以一般都要生成这个配置文件。用phpunit --generate-configuration
生成的phpunit.xml默认包含forceCoversAnnotation="true"
,它表示必须在测试方法头部的注释里显式使用@covers
标签声明统计范围,例如:
|
|
否则在执行统计代码覆盖率的命令时,会报risk:
There was 1 risky test:
- Ox3f\LaravelUtils\Log\LogTest::testAll This test does not have a @covers annotation but is expected to have one
如果希望单元测试覆盖全部代码、且不用一一显式声明,可以将此选项的值改成
false
。
之后即可使用明令phpunit —coverage-html ./report
统计代码覆盖率,统计结果保存在report目录中。