nexusphp / tachycardia
检测您PHPUnit驱动的测试套件中的运行缓慢的测试。
v2.3.0
2024-02-05 13:20 UTC
Requires
- php: ^8.1
- phpunit/phpunit: ^10.5 || ^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.43
- nexusphp/cs-config: ^3.19
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
README
Tachycardia 是一个PHPUnit扩展,用于检测和报告运行缓慢的测试,并在您的控制台中直接打印它们。它还可以在拉取请求期间可选地内联注释文件中的特定测试。
注意: Tachycardia 只会检测您的测试套件中的缓慢测试,但不会提供这些测试之所以缓慢的原因。您应使用专门的性能分析器来处理这些问题。
$ vendor/bin/phpunit PHPUnit 10.5.5 by Sebastian Bergmann and contributors. Runtime: PHP 8.3.1 with Xdebug 3.3.1 Configuration: /home/runner/work/tachycardia/tachycardia/phpunit.xml.dist Random Seed: 1698146158 ................................................................. 65 / 96 ( 67%) ............................... 96 / 96 (100%) Nexus\PHPUnit\Tachycardia\TachycardiaExtension identified this sole slow test: ⚠ Took 1.3374s from 1.0000s limit to run Nexus\\PHPUnit\\Tachycardia\\Tests\\Renderer\\GithubRendererTest::testRendererWorksProperly Slow tests: Time: 00:00:01.710 (2.54%) Time: 00:58.737, Memory: 16.00 MB OK (96 tests, 265 assertions) Generating code coverage report in Clover XML format ... done [00:00.391] Generating code coverage report in HTML format ... done [00:01.930]
安装
Tachycardia 应仅作为开发时依赖项安装,以帮助运行您的项目测试套件。您可以使用 Composer 进行安装。
composer require --dev nexusphp/tachycardia
配置
Tachycardia 支持以下参数
- time-limit - 强制所有测试的时间限制(秒)。所有超过此时间的测试都将被视为缓慢。 默认值:1.00
- report-count - 在控制台报告中显示的缓慢测试数量。在 Github Actions 报告中忽略此设置。 默认值:10
- precision - 测试消耗时间和分配时间限制的小数精度。 默认值:4
- format - 控制台渲染器的格式。
- ci-format - CI渲染器的格式。
控制台和CI的渲染器格式可以是以下之一
要使用默认配置选项使用扩展,您只需将以下内容添加到您的 phpunit.xml.dist
或 phpunit.xml
文件中。
<?xml version="1.0" encoding="UTF-8"?> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" bootstrap="vendor/autoload.php" cacheResultFile="build/.phpunit.cache/test-results" colors="true" beStrictAboutOutputDuringTests="true" beStrictAboutTodoAnnotatedTests="true" failOnRisky="true" failOnWarning="true"> <!-- Your other phpunit configurations here --> <extensions> <bootstrap class="Nexus\PHPUnit\Tachycardia\TachycardiaExtension" /> </extensions> </phpunit>
现在,运行 vendor/bin/phpunit
。如果存在消耗时间超过配置时间限制的测试用例,这些测试用例将在所有测试完成后显示在控制台上。
如果您希望自定义一个或多个选项,您只需更改您的 phpunit.xml.dist
或 phpunit.xml
文件中的条目。
<?xml version="1.0" encoding="UTF-8"?> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" bootstrap="vendor/autoload.php" cacheResultFile="build/.phpunit.cache/test-results" colors="true" beStrictAboutOutputDuringTests="true" beStrictAboutTodoAnnotatedTests="true" failOnRisky="true" failOnWarning="true"> <!-- Your other phpunit configurations here --> <extensions> <bootstrap class="Nexus\PHPUnit\Tachycardia\TachycardiaExtension"> <parameter name="time-limit" value="2.00" /> <parameter name="report-count" value="30" /> <parameter name="precision" value="2" /> <parameter name="format" value="table" /> <parameter name="ci-format" value="github" /> </bootstrap> </extensions> </phpunit>
文档
升级
从 v1.x 升级到 v2.x?请参阅UPGRADING 指南。
贡献
非常欢迎贡献。如果您看到改进或错误修复,现在就打开 PR!
有关在Nexus Tachycardia 中贡献的更多信息,请参阅。
灵感
Tachycardia 受johnkary/phpunit-speedtrap
启发,但注入了合成类固醇。
Tachycardia 实际上是一个 医学术语,指的是心率超过一般静息心率超过每分钟100次。
许可证
本库采用MIT许可证授权。