PHPUnitはPHPの単体テスト向けのテストライブラリです。テストを書きやすく、管理しやすくしてくれます。
テストを整備する際、しばしば失敗時に必ず行う処理を入れたくなる時があります。PHPUnit9以前の時は次のようにこれを書けました。
class HogeTest extends TestCase { protected function tearDown(): void { if($this->hasFailed()) { // テストが失敗した場合、現状を出力する var_dump($this); } parent::tearDown(); } // ここにテスト }
こうすると失敗時したところだけ情報が密になってログを読むのが楽になったり、失敗したテストを通知したりだとかができます。これを実現するために便利だった hasFailed メソッドがPHPUnit10からは消えていましたので、これを補う方法を紹介します。
実際のコードが次です。
class HogeTest extends TestCase { protected function tearDown(): void { if($this->status()->isFailure()) { // テストが失敗した場合、現状を出力する var_dump($this); } parent::tearDown(); } // ここにテスト }
直に fail したかを読むのではなく結果ステータスを介して読む必要があります。
破壊的変更でいささか混乱しましたが PHPUnit の構造は扱いやすくなったように感じます。今もなかなかですが、以前は輪にかけて呼べるメソッドが大量に平に並んでて一つ一つ何があるのか確かめる気になれませんでした。