Tachycardia是一个 PHPUnit 扩展,可以检测并报告运行缓慢的测试,并将它们直接打印在控制台中。它还可以选择在拉取请求期间内联注释文件中的特定测试。
注意:心动过速只会检测测试套件中的慢速测试,但不会解释为什么这些已识别的测试速度慢。您应该使用专用的分析器来代替这些。
$vendor/bin/phpunitPHPUnit 10.5.5 由 Sebastian Bergmann 和贡献者提供。运行时:PHP 8.3.1 和 Xdebug 3.3.1配置:/home/runner/work/tachycardia/tachycardia/phpunit.xml.distRandom 种子:1698146158... ...................................................... ................. 65 / 96 ( 67%) ................................. 96 / 96 (100%)NexusPHPUnitTachycardiaTachycardiaExtension 识别出这个唯一的慢测试:从 1.0000 秒的限制中花费了 1.3374 秒来运行 NexusPHPUnitTachycardiaTestsRendererGithubRendererTest::testRendererWorksProperlySlow 测试:时间:00:00:01.710 (2.54%)时间: 00:58.737,内存:16.00 MBOK(96 个测试,265 个断言)生成 Clover XML 格式的代码覆盖率报告...完成 [00:00.391]生成 HTML 格式的代码覆盖率报告...完成 [00:01.930]
Tachycardia 只能作为开发时依赖项安装,以帮助运行项目的测试套件。您可以使用 Composer 安装:
composer require --dev nexusphp/tachycardia
心动过速支持以下参数:
time-limit - 对所有测试强制执行的时间限制(以秒为单位)。所有超过此数量的测试都将被视为缓慢。默认值:1.00
report-count - 要在控制台报告中显示的慢速测试的数量。这在 Github Actions 报告中被忽略。默认值:10
precision - 测试消耗时间和分配时间限制的小数精度。默认值:4
format - 控制台渲染器的格式。
ci-format - CI 渲染器的格式。
控制台和 CI 的渲染器格式可以是以下任意一种:
格式 | 对于控制台? | 对于 CI? | 评论 |
---|---|---|---|
列表 | 控制台的默认设置 | ||
桌子 | |||
github | CI 的默认值 | ||
GitLab | |||
团队城市 |
要使用该扩展及其默认配置选项,您只需将以下内容添加到phpunit.xml.dist
或phpunit.xml
文件中。
<?xml 版本=“1.0”编码=“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" 颜色 = "true" beStrictAboutOutputDuringTests = "true" beStrictAboutTodoAnnotatedTests=“true”failOnRisky=“true”failOnWarning=“true”><!-- 此处的其他 phpunit 配置 --><extensions> <bootstrap class="NexusPHPUnitTachycardiaTachycardiaExtension" /> </扩展名> </phpunit>
现在,运行vendor/bin/phpunit
。如果有测试用例消耗的时间超过配置的时间限制,这些将在所有测试完成后显示在控制台中。
如果您希望自定义一个或多个可用选项,只需更改phpunit.xml.dist
或phpunit.xml
文件中的条目即可。
<?xml 版本=“1.0”编码=“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" 颜色 = "true" beStrictAboutOutputDuringTests = "true" beStrictAboutTodoAnnotatedTests=“true”failOnRisky=“true”failOnWarning=“true”><!-- 此处的其他 phpunit 配置 --><extensions> <bootstrap class="NexusPHPUnitTachycardiaTachycardiaExtension"> <参数名称=“时间限制”值=“2.00”/> <参数名称=“报告计数”值=“30”/> <参数名称=“精度”值=“2”/> <参数名称=“格式”值=“表”/> <参数名称=“ci-format”值=“github”/> </引导> </扩展名> </phpunit>
报告缓慢的测试
使用环境变量启用/禁用控制台报告
在 Github Actions 中启用/禁用分析
自定义时间限制
设置每个测试的自定义时间限制
设置每堂课的自定义时间限制
禁用每个测试或每个班级的时间限制
使用属性代替
将结果制成表格而不是简单的渲染
重新运行缓慢的测试,看看现在是否很快
从 v1.x 升级到 v2.x?请参阅升级指南。
非常欢迎您的贡献。如果您发现改进或错误修复,请立即提交 PR!
阅读有关 Nexus 心动过速贡献的更多信息。
Tachycardia 的灵感来自johnkary/phpunit-speedtrap
,但注入了合成代谢类固醇。
心动过速实际上是一个医学术语,指的是心率超过正常静息心率(一般每分钟超过 100 次)。
该库根据 MIT 许可证获得许可。