运行测试需要一些时间,有时我只是想知道测试范围。
是否可以运行类似phpunit --coverage-text
的东西,使它仅输出测试覆盖率而没有实际运行所有测试?
答案 0 :(得分:2)
您不能这样做,因为PHPUnit需要运行测试才能知道测试触及了哪几行代码。但是有一种解决方法:合并代码覆盖率报告。
示例:您运行了完整的测试套件,报告说您覆盖了72%的代码。然后添加更多测试。您只运行这些新测试,最后得出的代码覆盖率为3%。之后,您可以合并两个报告,以使覆盖率达到75%。
一种方法是使用PHPUnit参数--coverage-php
和phpcov:
您可以一次运行完整的测试套件:
phpunit --coverage-php coverage/fulltest.cov
过一阵子,您编写了一个新测试并仅运行该测试
phpunit tests/SomeClassTest --filter testNewMethod --coverage-php coverage/testNewMethod.cov
您将报告合并到coverage.html
文件中,以获得完整的代码覆盖范围
phpcov merge --html coverage.html /coverage
如果测试确实需要很长时间才能运行,则可以选择这样做,因为现在您只需要运行新测试即可更新代码覆盖率。当然,每次都手动执行此过程很痛苦,但是您可以创建一个脚本来使其自动化。