web-dev-qa-db-ja.com

laravelでphpunitを使用して特定のテストクラスをテストする方法

失敗したテストクラスが多数あるため、プロジェクトで特定のtestClassをテストします。一度に1つのクラスのみをテストします。

次のフォルダーにテストクラスを作成しました\test\repositories\ApplicationVersionFormat.php

<?php
use App\Repositories\ApplicationVersionFormat;

class ApplicationVersionFormatTest extends \TestCase
{
  public function testValidFormat()
  {
    $version = '1.2.3';
    $appVersion = new ApplicationVersionFormat();
    $this->assertEquals(true,$appVersion->isValidVersion($version));
  }

  public function testInvalidFormat()
  {
    $version = '11.2.3';
    $appVersion = new ApplicationVersionFormat();
    $this->assertEquals(false,$appVersion->isValidVersion($version));
  }

  public function testInvalidFormat2()
  {
    $version = '1.22.3';
    $appVersion = new ApplicationVersionFormat();
    $this->assertEquals(false,$appVersion->isValidVersion($version));
  }

  public function testInvalidFormat3()
  {
    $version = '1.2.33';
    $appVersion = new ApplicationVersionFormat();
    $this->assertEquals(false,$appVersion->isValidVersion($version));
  }

  public function testInvalidFormat4()
  {
    $version = '11.22.33';
    $appVersion = new ApplicationVersionFormat();
    $this->assertEquals(false,$appVersion->isValidVersion($version));
  }
}

だから私はこの次のコマンドを試しましたが、これはどれも動作しません:

  • phpunit "repositories\AppVersionTest"。 => 「test/repositories/AppVersionTest.php」ファイルを開けません
  • phpunit "test\repositories\AppVersionTest"。 => 「test/repositories/AppVersionTest.php」ファイルを開けません
  • phpunit --filter "repositories\AppVersionTest"。 => テストは実行されていません!
  • phpunit --testsuite "repositories\AppVersionTest"。 => テストは実行されていません!

何か助け?ありがとう

38
Gujarat Santana

いくつかの方法を試した後、特定のテストクラスをテストするためにフォルダーを含める必要がないことがわかりました。これは私にとってはうまくいき、クラスですべてのテストを実行します:

phpunit --filter ApplicationVersionFormatTest

ApplicationVersionFormatTestがTestCaseを拡張し、Laravelのすべてのコンポーネントの「接着剤」として機能するアプリケーションインスタンスを返すためだと思います。

62
Gujarat Santana

laravel=で多くの方法でphpunitテストを実行するため..

vendor/bin/phpunit --filter methodName className pathTofile.php

vendor/bin/phpunit --filter 'namespace\\directoryName\\className::methodName'

テスト単一クラスの場合:

vendor/bin/phpunit --filter  tests/Feature/UserTest.php
vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest'
vendor/bin/phpunit --filter 'UserTest' 

テスト単一メソッドの場合:

 vendor/bin/phpunit --filter testExample 
 vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest::testExample'
 vendor/bin/phpunit --filter testExample UserTest tests/Feature/UserTest.php

名前空間内のすべてのクラスからテストを実行する場合:

vendor/bin/phpunit --filter 'Tests\\Feature'

より多くの方法でテストを実行 詳細を参照

20
Jignesh Joisar

おそらく this answer で関連する質問に対処できます。

クラスを@groupアノテーションでマークし、--group <group_name>でPHPUnitを実行するだけです

更新

--filterを使用したコマンドは完了していません。これを試してください:phpunit --filter AppVersionTest "repositories\ApplicationVersionFormat.php"

3
BVengerov

phpunit --filter <relative_path_to_file>たとえば、テストするファイルは、test/repos/EloquentPushTest.phptest/repos/EloquentWebTest.php 検査用の EloquentWebTest.php

つかいます phpunit --filter ./repos/ElqouentWebpush

使用例:

php phpunit-5.7.27.phar -c app/ "src/package/TestBundle/Tests/Controller/ExampleControllerTest.php"
0
joan16v