Tachycardiaは、実行速度の遅いテストを検出して報告し、コンソールに直接出力する PHPUnit 拡張機能です。オプションで、プル リクエスト中にファイル内の特定のテストにインライン アノテーションを付けることもできます。
注: Tachycardia は、テスト スイート内の遅いテストのみを検出しますが、特定されたテストがなぜ遅いのかについては説明しません。代わりに、これらには専用のプロファイラーを使用する必要があります。
$vendor/bin/phpunitPHPUnit 10.5.5 by Sebastian Bergmann および寄稿者。ランタイム: PHP 8.3.1 と Xdebug 3.3.1 構成: /home/runner/work/tachycardia/tachycardia/phpunit.xml.distRandom Seed: 1698146158.... ................................................................... …………65 / 96 ( 67%)................................................ 96 / 96 (100%)NexusPHPUnitTachycardiaTachycardiaExtension でこの唯一の遅いテストが特定されました: 1.3374 かかったNexusPHPUnitTachycardiaTestsRendererGithubRendererTest::testRendererWorksProperlySlow テストを実行するには 1.0000 秒からの制限: 時間: 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
Tachycardia は次のパラメーターをサポートしています。
time-limit - すべてのテストに適用される時間制限 (秒単位)。この量を超えるすべてのテストは遅いとみなされます。デフォルト: 1.00
report-count - コンソール レポートに表示される低速テストの数。これは Github Actions レポートでは無視されます。デフォルト: 10
精度- テストの所要時間と割り当てられた制限時間の小数点以下の精度の程度。デフォルト: 4
format - コンソールのレンダラーの形式。
ci-format - CI のレンダラーの形式。
コンソールと CI の両方のレンダラー形式は次のいずれかになります。
形式 | コンソール用? | CI用? | 備考 |
---|---|---|---|
リスト | コンソールのデフォルト | ||
テーブル | |||
ギットハブ | 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" color="true" beStrictAboutOutputDuringTests="true" beStrictAboutTodoAnnotatedTests="true"failOnRisky="true"failOnWarning="true"><!-- 他の phpunit 設定はここに --><拡張機能> <bootstrap class="NexusPHPUnitTachycardiaTachycardiaExtension" /> </拡張機能> </phpunit>
次に、 vendor/bin/phpunit
を実行します。消費時間が設定された時間制限を超えるテスト ケースがある場合は、すべてのテストが完了した後にコンソールに表示されます。
使用可能なオプションを 1 つ以上カスタマイズしたい場合は、 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" color="true" beStrictAboutOutputDuringTests="true" beStrictAboutTodoAnnotatedTests="true"failOnRisky="true"failOnWarning="true"><!-- 他の phpunit 設定はここに --><拡張機能> <bootstrap class="NexusPHPUnitTachycardiaTachycardiaExtension"> <パラメータ名="時間制限" 値="2.00" /> <パラメータ名="レポート数" 値="30" /> <パラメータ名="精度" 値="2" /> <パラメータ名="フォーマット" 値="テーブル" /> <parameter name="ci-format" value="github" /> </ブートストラップ> </拡張機能> </phpunit>
遅いテストのレポート
環境変数を使用したコンソールレポートの有効化/無効化
Github Actions でのプロファイリングの有効化/無効化
カスタム時間制限
テストごとにカスタム時間制限を設定する
クラスごとにカスタム時間制限を設定する
テストごとまたはクラスごとの時間制限の無効化
代わりに属性を使用する
単純なレンダリングの代わりに結果を表にする
遅いテストを再実行して、現在高速になっているかどうかを確認します
v1.x から v2.x にアップグレードしますか? 「アップグレードガイド」を参照してください。
貢献は大歓迎です。改善やバグ修正を見つけたら、今すぐ PR を開いてください。
Nexus Tachycardia への貢献について詳しく読んでください。
Tachycardia はjohnkary/phpunit-speedtrap
からインスピレーションを得ましたが、アナボリックステロイドが注入されました。
頻脈は実際には、通常の安静時心拍数を超える心拍数(一般的に 1 分あたり 100 拍を超える)を指す医学用語です。
このライブラリは、MIT ライセンスに基づいてライセンスされています。