как протестировать определенный класс тестов с помощью 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"