🥕

Laravel11 testコマンド

2024/12/24に公開

この記事は Laravel11にあるartisanコマンドを全部調べる Advent Calendar 2024 24日目の記事です。

今回はtestコマンドについて調べました。

これらはlaravel/frameworkには定義しているものではなく、nunomaduro/collisionのLaravel拡張パッケージに定義しているコマンドです。
laravel/laravelのcomposer.jsonに書かれているパッケージだったので対象に含めています。

環境

  • PHP 8.4.1
  • laravel/laravel 11.3.3
  • laravel/framework 11.33.2
  • nunomaduro/collision 8.5.0

test

テストを実行する。

php artisan test

実行するとPHPUnitもしくはPestのテストを実行します。

advent-calendar-2024 % php artisan test

   PASS  Tests\Unit\ExampleTest
  ✓ that true is true

   PASS  Tests\Feature\ExampleTest
  ✓ the application returns a successful response    0.04s

  Tests:    2 passed (2 assertions)
  Duration: 0.07s

また、PHPUnitもしくはPestに渡すことができる引数はtestコマンドでも渡すことができます。

advent-calendar-2024 % php artisan test --testsuite=Feature

   PASS  Tests\Feature\ExampleTest
  ✓ the application returns a successful response    0.07s  

  Tests:    1 passed (1 assertions)
  Duration: 0.14s
オプション 説明
--without-tty TTYへの出力を無効
--compact 結果を簡潔に表示
--coverage コードカバレッジの計測
--min[=MIN] コードカバレッジの最小しきい値を指定
-p
--parallel
テストを並列で実行
--profile もっとも遅いテストトップ10のリスト表示
--recreate-databases テストデータベースの再作成
--drop-databases テストデータベースの削除
--without-databases テストデータベース接続が無効
  • --without-ttyを付けるとTTYへの出力を無効にできます
  • --compactを付けるとテスト結果を簡潔に表示します
advent-calendar-2024 % php artisan test --compact

  ..

  Tests:    2 passed (2 assertions)
  Duration: 0.14s
  • --coverageを付けるとコードカバレッジの計測が可能です
    カバレッジ計測を行うには別途Xdebug、またはPCOVが必要です
  • --minを使うことでテストカバレッジの最小値を指定できます
    指定した値に満たないテストは失敗します
  • -p、もしくは--parallelを付けるとテストを並列で実行できます
    このオプションを使うにはbrianium/paratestパッケージのインストールが必要です
  • --profileを付けるともっとも遅い10件のテストのリストが表示できます
advent-calendar-2024 % php artisan test --profile

   PASS  Tests\Unit\ExampleTest
  ✓ that true is true

   PASS  Tests\Feature\ExampleTest
  ✓ the application returns a successful response    0.07s

  Tests:    2 passed (2 assertions)
  Duration: 0.14s

  Top 10 slowest tests:
  Tests\Feature\ExampleTest > the application return 0.07s
  Tests\Unit\ExampleTest > that true is true         0.00s
  ────────────────────────────────────────────────────────
                                   (54.31% of 0.14s) 0.08s
  • --recreate-databasesを付けると並列テストの開始時にテストデータベースを再作成します
  • --drop-databasesを付けると並列テストの終了時にテストデータベースを削除します
  • --without-databasesを付けると並列テスト中にテストデータベースへの接続を無効化します
GitHubで編集を提案

Discussion