【Laravel】特定のテストケースを実行する

こんにちは。今回はLaravelのTest機能でテストクラスや、テストメソッドを指定して実行する方法を解説します。artisan testコマンドはデフォルトですべてのテストメソッドを実行するので、個別で実行する方法は覚えておく必要があります。

テストケースの作り方については以下の記事で解説していますので参考にしてください。【Laravel】5分でユニットテスト実行環境を作成する Unit Test

前提条件

以下のテストクラスが作成されていることを前提とします。

Tests/
    Unit/
        ExampleTest.php
            example1(method )
            example2(method )
        SampleTest.php
            sample1(method)
            sample2(method)
        Sample2Test.php
            sample3(method)

特定のクラスやテストケースを実行する方法

特定のテストクラスやテストメソッドを指定して実行する方法を説明します。

テストクラスを実行する

引数にファイルパスを指定して実行します。

$ php artisan test tests/Unit/SampleTest.php 

   PASS  Tests\Unit\SampleTest
  ✓ sample1
  ✓ sample2

  Tests:  2 passed
  Time:   0.07s

テストメソッドを実行する

–filterオプションを追加することで、テストクラス内の特定のメソッドを抽出して実行することができます。

$ php artisan test --filter sample1 tests/Unit/SampleTest.php 

   PASS  Tests\Unit\SampleTest
  ✓ sample1

  Tests:  1 passed
  Time:   0.05s

テストクラスを検索して一括で実行する

次に条件を指定して絞り込んだテスト群を一括で実行する方法を紹介します。

–filterオプションでテストクラスを検索することができます。先程は同じfilterオプションでテストメソッドを検索していました。引数にテストクラスを指定しない場合は、テストクラスを検索することができます。

$ php artisan test --filter Sample

   PASS  Tests\Unit\Sample2Test
  ✓ sample3

   PASS  Tests\Unit\SampleTest
  ✓ sample1
  ✓ sample2

  Tests:  3 passed
  Time:   0.10s

特定のグループを指定して実行する

テストメソッドにグループを指定し、実行時に特定のグループのみ指定して実行することができます。グループに所属させるにはテストメソッドにたいして@groupアノテーションを付与します。

	/**
     * @group one
     */
    public function test_sample1()
    {
        $this->assertTrue(true);
    }

example1, sample1メソッドをグループone, example2, sample2メソッドをグループtwoに設定しました。グループoneのみ実行するには–groupオプションをつけてartisan testを実行します。

$ php artisan test --group one

   PASS  Tests\Unit\ExampleTest
  ✓ example1

   PASS  Tests\Unit\SampleTest
  ✓ sample1

  Tests:  2 passed
  Time:   0.07s

まとめ

Laravelのテストを個別に実行する方法を解説しました。検索機能もあるので、比較的柔軟に実行することができそうです。テストクラスやテストメソッドはまとめて実行しやすいように、しっかり方針を定めて決めることが大事だと思いました。

Laravel

Posted by kobainmac