失敗したテストクラスが多数あるため、プロジェクトで特定の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"
。 => テストは実行されていません!何か助け?ありがとう
いくつかの方法を試した後、特定のテストクラスをテストするためにフォルダーを含める必要がないことがわかりました。これは私にとってはうまくいき、クラスですべてのテストを実行します:
phpunit --filter ApplicationVersionFormatTest
ApplicationVersionFormatTestがTestCaseを拡張し、Laravelのすべてのコンポーネントの「接着剤」として機能するアプリケーションインスタンスを返すためだと思います。
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'
より多くの方法でテストを実行 詳細を参照
おそらく this answer で関連する質問に対処できます。
クラスを@group
アノテーションでマークし、--group <group_name>
でPHPUnitを実行するだけです
更新
--filter
を使用したコマンドは完了していません。これを試してください:phpunit --filter AppVersionTest "repositories\ApplicationVersionFormat.php"
phpunit --filter <relative_path_to_file>
たとえば、テストするファイルは、test/repos/EloquentPushTest.php
、test/repos/EloquentWebTest.php
検査用の EloquentWebTest.php
つかいます phpunit --filter ./repos/ElqouentWebpush
使用例:
php phpunit-5.7.27.phar -c app/ "src/package/TestBundle/Tests/Controller/ExampleControllerTest.php"