【PHP】PHPUnit10以降でテスト失敗時限定の処理を書く

  • 2024年4月5日
  • PHP

 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 の構造は扱いやすくなったように感じます。今もなかなかですが、以前は輪にかけて呼べるメソッドが大量に平に並んでて一つ一つ何があるのか確かめる気になれませんでした。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG