как протестировать определенный класс тестов с помощью phpunit в laravel
Я хочу протестировать конкретный testClass в моем проекте, так как есть много тестового класса, и я просто хочу протестировать один класс за раз.
Я создал тестовый класс в следующей папке \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"
. => Никаких тестов не выполнено!
любая помощь? благодаря
Ответы
Ответ 1
После нескольких попыток выяснилось, что мне не нужно включать папку для тестирования конкретного тестового класса. Это работает для меня, он выполняет все тесты на классе:
phpunit --filter ApplicationVersionFormatTest
Я думаю, это потому, что мой ApplicationVersionFormatTest расширяет TestCase и возвращает экземпляр приложения, который служит "клеем" для всех компонентов Laravel.
Ответ 2
для запуска теста phpunit в laravel многими способами..
vendor/bin/phpunit --filter methodName className pathTofile.php
vendor/bin/phpunit --filter 'namespace\\directoryName\\className::methodName'
для тестового одиночного класса:
vendor/bin/phpunit tests/Feature/UserTest.php
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'
для более подробного запуска теста см. больше
Ответ 3
Возможно, вы справитесь с этим ответом на соответствующий вопрос.
Просто пометьте класс аннотацией @group
и запустите PHPUnit с помощью --group <group_name>
Обновить
Ваша команда с --filter
не завершена. Попробуйте это: phpunit --filter AppVersionTest "repositories\ApplicationVersionFormat.php"
Ответ 4
phpunit --filter <relative_path_to_file>
например, файлы для тестирования: test/repos/EloquentPushTest.php
, test/repos/EloquentWebTest.php
для тестирования EloquentWebTest.php
использовать phpunit --filter./repos/ElqouentWebpush
Ответ 5
Пример использования:
php phpunit-5.7.27.phar -c app/ "src/package/TestBundle/Tests/Controller/ExampleControllerTest.php"