🙆

PHPUnitのテストをスキップする方法

2023/09/25に公開

バージョンが古いかもだけど

関連記事:
ファイルの修正個所、コミットの差分だけPHPCSを充てる方法
WSLとJetbrains GatewayでPHPStormローカルリモート開発
PHP SPLの標準Interfaceを真剣に考える
assertEqualsを今すぐ捨て、assertSameを使うのです
PHPUnitには @testdox を使え

PHPUnitにテストを追加する際、
テストを実行すると既存のテストを全部実行する。

CIとかならそれでいいのだが、
開発の際に何度も実行する場合、
これから追加するテストだけ実行したい。

そこでテストをスキップする機構を使って、
指定したテストだけ実行する方法を記載する

以前のバージョンはアノテーションに@skipを追加する必要があったが、
現在では markTestSkipped というメソッドを加えることでスキップを実現する。
あとは現在実行しているテスト名がわかれば指定のテストだけ実行できる。

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

setUpにmarkTestSkippedを追加する

getCurrentTesting 以外のテストをスキップする
getNameで現在実行されているテストメソッド名が取得できるので、
setUp上で振り分けを追加する

CurrentClassTest.php
  protected function setUp(): void
  {
    parent::setUp();
    if($this->getName() !== "testGetCurrentTesting") {
      $this->markTestSkipped('must be revisited.');
    }
  }
  
  public function testAbc(){}
  public function testDef(){}
  public function testGhi(){}
  
  public function testGetCurrentTesting()
  {
  // 現在のテスト
  }

------------------- ↓ 後書きはここから ↓-------------------

テスト名は完全一致しないとスキップできない使用になっているが、
mb_strposのような部分一致を使えば、
名称が近いものや長いものを一致させやすくなる

Discussion