ciltocruz / phpunit-coverage-tools
PHPUnit 覆盖率工具分支
v1.8.0
2024-02-18 09:42 UTC
Requires
- php: ^8.1
- ext-simplexml: *
- ext-xmlreader: *
- phpunit/phpunit: ^10.3||^11.0
- symfony/console: ^5.4||^6.2||^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.9
- phpstan/phpstan: ^1.10
- spatie/phpunit-snapshot-assertions: ^5.0
This package is auto-updated.
Last update: 2024-09-27 08:34:48 UTC
README
此扩展允许您使用PHPUnit的Clover XML报告强制执行最小代码覆盖率。根据给定的阈值,如果覆盖率高于阈值,则测试套件将以正常退出;如果覆盖率低于阈值,则以代码1退出。这可以在您的持续部署环境中使用,也可以添加到预提交钩子中。
安装
> composer require robiningelbrecht/phpunit-coverage-tools --dev
配置
导航到您的phpunit.xml.dist
文件,并添加以下配置以设置默认选项
<extensions> <bootstrap class="RobinIngelbrecht\PHPUnitCoverageTools\PhpUnitExtension"> <parameter name="exitOnLowCoverage" value="0|1"/> <parameter name="cleanUpCloverXml" value="0|1"/> </bootstrap> </extensions>
用法
就像通常一样运行您的测试套件,但添加以下参数
--min-coverage=[INTEGER]
> vendor/bin/phpunit --coverage-clover=path/to/clover.xml -d --min-coverage=100
当分配一个介于0到100之间的整数时,您将强制所有类的最小代码覆盖率。换句话说,您项目的总覆盖率必须高于此阈值。
--min-coverage=[path/to/min-coverage-rules.php]
> vendor/bin/phpunit --coverage-clover=path/to/clover.xml -d --min-coverage="path/to/min-coverage-rules.php"
当引用PHP配置文件时,您可以配置更复杂的规则。这允许您对应用程序的关键部分更加严格,而对不那么关键的软件部分不那么严格。
例如
<?php use RobinIngelbrecht\PHPUnitCoverageTools\MinCoverage\MinCoverageRule; return [ new MinCoverageRule( pattern: MinCoverageRule::TOTAL, minCoverage: 20, exitOnLowCoverage: true ), new MinCoverageRule( pattern: 'RobinIngelbrecht\PHPUnitCoverageTools\*', minCoverage: 80, exitOnLowCoverage: false ), new MinCoverageRule( pattern: 'RobinIngelbrecht\PHPUnitCoverageTools\Subscriber\Application\ApplicationFinishedSubscriber', minCoverage: 100, exitOnLowCoverage: true ), new MinCoverageRule( pattern: 'RobinIngelbrecht\PHPUnitCoverageTools\*CommandHandler', minCoverage: 100, exitOnLowCoverage: true ), ];
以下示例将强制执行
- 最小总覆盖率20%
- 命名空间
RobinIngelbrecht\PHPUnitCoverageTools
中所有类的最小覆盖率80%,但如果失败则不会exit = 1
- 类
ApplicationFinishedSubscriber
的100%代码覆盖率 - 以
CommandHandler
结尾的类的100%代码覆盖率
--clean-up-clover-xml
添加此参数将在应用程序运行完成后清理生成的Clover文件。