robiningelbrecht / phpunit-coverage-tools
PHPUnit 覆盖率工具
v1.8.1
2024-08-27 11:29 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-08-27 11:30:17 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%的覆盖率,但如果不通过则不会退出 = 1
- 100%的类
ApplicationFinishedSubscriber
的代码覆盖率 - 100%的以
CommandHandler
结尾的类的代码覆盖率
--clean-up-clover-xml
添加此参数将在应用程序运行完毕后清理生成的Clover文件。