[PHPUnit] 覚えておくと便利なテストコマンド一覧

2020/04/26

author

masyus

ローカル環境でPHPUnitのテストを実行する時、毎回全てのテストを実行してしまい時間かかってしまうことはありませんか?phpunitコマンドにはファイル単位やメソッド単位でテストする方法が用意されています。私もやり方を忘れがちになるため、メモがてら解説を残します。検証したPHPUnitのバージョンは6.5.13です。

特定のテストファイルだけを実行する場合

基本のおさらいです。特定のテストファイルだけをテスト実行の対象にする場合、phpunitの次に

実行させたいテストファイルのパス+ファイル名

を指定します。

ファイルもしくはメソッドに特定の文字列を含むテストだけを実行する場合は–filterを使う

少し高度ですが

  • 指定した文字列が入っているテストファイルだけをテスト実行の対象とする
  • 指定した文字列が入っているテストメソッドだけをテスト実行の対象とする

方法があります。そのケースでは–filterオプションを使いましょう。

テスト実行中にどのテストが失敗したかをリアルタイムで判別したい時は–testdoxを使う

phpunitでテストをすると、テストの実行結果はリアルタイムで.F、もしくはEだけを表示します。しかしテスト中はどのテストがSuccess, Failure, Exceptionしているかまでは分かりません。

そこで役立つのが–testdoxというオプションです。「dox」というワードが聞きなれず、つい「box」にしがちですが「dox」が正しいです。このオプションをつけて実行すると、どのテスト名で成功したか、あるいは失敗したかを[x]もしくは[ ]でリアルタイム表示してくれるようになります。

vendor/bin/phpunit tests/TestCase/Controller/Component/HogeComponentTest.php --testdox
PHPUnit 6.5.13 by Sebastian Bergmann and contributors.

App\Test\TestCase\Controller\Component\HogeComponent
 [x] Initialize
 [x] Set
 [x] Get
 [ ] GetByName
 [x] SetName

少々わかりづらいですがテストに成功した場合は[x]、テストに失敗した場合は[ ]と表示されます。

便利ではありますが、このオプションを使用すると

テスト完了後に失敗したテストの具体的な原因をアウトプットしてくれなくなる

のが難点です。そのため、ある程度広範囲にテストを実施してみて、失敗したテストをいち早く特定したい時に使うのが良いのではないかと思います。

どんなオプションがあるかをもっと知りたいと思ったら–help

定石ではありますが、さらにphpunitのオプションを知りたい場合は–helpオプションで調べましょう。ちなみにphpunit6.5.13では下記のオプション区分がありました。

  • Code Coverage Options: テスト実行結果のカバレッジレポートを生成する際のフォーマット等を指定できる
  • Logging Options: テスト実行結果のログを生成する際のフォーマット等を指定できる
  • Test Selection Options: テストの実行範囲等を指定できる (前述の–filterはここに所属する)
  • Test Execution Options: テスト実行時に関する細かな設定ができる (前述の–testdoxはここに所属する)
  • Configuration Options: XMLで記述したテスト実行における設定ファイルの読み込み等を細かく指定できる
  • Miscellaneous Options: –helpや–check-versionなど、PHPUnitに関すること全般の出力を司る

今回紹介した以外にも便利なオプションが沢山あるはずです。

参考

ユニットテストの関連記事

まだ記事がありません