nexusphp/tachycardia

检测您PHPUnit驱动的测试套件中的运行缓慢的测试。

v2.3.0 2024-02-05 13:20 UTC

This package is auto-updated.

Last update: 2024-08-28 14:07:15 UTC


README

PHP version build Coverage Status PHPStan Latest Stable Version License Total Downloads

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.distphpunit.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.distphpunit.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许可证授权。