thor-juhasz / phpunit-coverage-check
一个PHPUnit测试覆盖率检查器
v0.3.0
2021-07-04 22:21 UTC
Requires
- php: >=7.4
- ext-bcmath: *
- ext-simplexml: *
- symfony/console: 4.*|5.*
Requires (Dev)
- phpunit/phpunit: ^9
- vimeo/psalm: ^4.8
This package is auto-updated.
Last update: 2024-09-07 04:43:46 UTC
README
一个PHPUnit测试覆盖率检查器。
此命令将解析一个clover.xml报告文件(由PHPUnit生成),以检查测试覆盖率是否达到某个阈值(默认为80%)。
安装
在项目根目录中运行此命令
composer require --dev thor-juhasz/phpunit-coverage-check
这将在您的 vendor/bin/
目录中添加一个新的PHP二进制文件,命名为 phpunit-coverage-check
。
使用方法
在GitHub工作流程中使用
要在此GitHub CI工作流程中使用此库,请确保在运行phpunit时生成一个clover.xml
报告文件
- name: Run PHPUnit Tests run: ./vendor/bin/phpunit --coverage-clover clover.xml
然后只需在此运行phpunit的步骤之后添加此步骤
- name: Test coverage run: ./vendor/bin/phpunit-coverage-check -t 100 clover.xml
手动运行
使用PHPUnit生成clover.xml
报告文件
./vendor/bin/phpunit --coverage-clover clover.xml
然后您可以运行此库提供的二进制文件,将clover.xml文件的名称作为第一个参数传递
./vendor/bin/phpunit-coverage-check clover.xml
参数
文件名(必需)
clover覆盖率XML文件的名称。
示例
./vendor/bin/phpunit-coverage-check clover.xml
选项
阈值(可选)
默认值:80
阈值确定可接受测试覆盖率的下限。您可以使用--threshold N
或简写为-t N
来传递您想要的阈值,其中N
是一个从0到100的数字
示例
# Requires 100% coverage ./vendor/bin/phpunit-coverage-check --threshold 100 clover.xml # Requires 50% coverage ./vendor/bin/phpunit-coverage-check -t 50 clover.xml # By default when passing no threshold option, it will require 80% coverage ./vendor/bin/phpunit-coverage-check clover.xml
指标(可选)
默认值:elements
您可以在此处指定您想用来读取代码覆盖率的指标。支持的指标有
- elements
- statements
- methods
示例
./vendor/bin/phpunit-coverage-check --metric statements clover.xml
./vendor/bin/phpunit-coverage-check -m methods clover.xml
# By default when passing no metric option, it will use elements
./vendor/bin/phpunit-coverage-check clover.xml
suppress-errors(可选)
当clover XML报告中报告的代码覆盖率低于指定的阈值时,命令将以代码1退出。当在CI工作流程中使用时,这将导致作业失败。
如果您想在没有使作业失败的情况下使用此工具在CI工作流程中,可以传递--suppress-errors
选项(或简写为-s
)。
示例
# Even if the coverage is under the threshold, this will not fail the job - name: Test coverage run: ./vendor/bin/phpunit-coverage-check -t 100 clover.xml
输出
示例输出
# When coverage is 100%, and default threshold used. $ ./vendor/bin/phpunit-clover-test-coverage-check clover.xml [OK] Code coverage is 100%, which is acceptable (requires >= 80% coverage) # When coverage is 100%, and threshold is set to 100%. $ ./vendor/bin/phpunit-clover-test-coverage-check clover.xml [OK] Code coverage is 100%, which is acceptable (requires full coverage) # When coverage is 1%, and default threshold used. $ ./src/test-coverage-checker.php clover.xml [ERROR] Code coverage is 1%, which is not acceptable (requires >= 80% coverage) # When coverage is 1%, and threshold is set to 100%. $ ./src/test-coverage-checker.php clover.xml [ERROR] Code coverage is 1%, which is not acceptable (requires full coverage)