Подтвердить что ты не робот

Ошибка при попытке запустить PHPUnit из PhpStorm

У меня мало проблем, когда я пытаюсь запустить тест PHPUnit в среде IDE PhpStorm.

Я использую композитный файл, который выглядит:

{
    "require": {
        "phpunit/phpunit": "3.7.19"
    }
}

Теперь, когда я запускаю тест, я получаю исключение: PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.'

Что не так? Когда я включил проверку установленной версии груши, хорошо.

// ИЗМЕНИТЬ Пример тестового класса:

 class ReaderTest extends PHPUnit_Framework_TestCase
    {
        /**
         * @test
         */
        public function shouldGetReadedValue ()
        {
            $this->assertTrue(true);
        }
    }

// EDIT2 Трассировка:

/usr/bin/php /tmp/ide-phpunit.php --no-configuration /path/to/my/project
Testing started at 14:53 ...
PHP Fatal error:  Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.' in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:183
Stack trace:
#0 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(315): PHPUnit_Framework_TestSuite->__construct(Object(ReflectionClass))
#1 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(389): PHPUnit_Framework_TestSuite->addTestSuite(Object(ReflectionClass))
#2 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(416): PHPUnit_Framework_TestSuite->addTestFile('/var/www/php-sh...')
#3 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Runner/BaseTestRunner.php(96): PHPUnit_Framework_TestSuite->addTestFiles(Array)
#4 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php(150): PHPUnit_Runner_BaseTestRunner->getTest('/var/www/php-sh...', '', A in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php on line 183

Process finished with exit code 255
4b9b3361

Ответ 1

Я нашел решение этой проблемы.

В разделе "Редактирование конфигураций в каталоге" я установил путь к каталогу моих тестов (/path/to/my/project/tests) после правильной работы этих тестов.

Ответ 2

У меня такая же проблема при использовании композитора.

Решение состоит в том, чтобы поместить ваш тестовый файл в свой собственный каталог. Вот мой рабочий phpunit, я поместил все мои тесты в каталог test.

<phpunit bootstrap="vendor/autoload.php" 
    colors="true"
    convertErrorsToExceptions="true"
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true"
    stopOnFailure="true">
    <testsuites>
        <testsuite name="Test Suite">
            <directory>test</directory>
        </testsuite>
    </testsuites>
</phpunit>

Надеюсь, он решает, если у кого-то такая же проблема..:)

Ответ 3

Это то, что сработало для меня, благодаря ответу Петра выше, но я предоставляю более детальную информацию о всех шагах, которые я должен был сделать:

Шаги, чтобы заставить его работать (тест в PHPStorm 8.0.1):

1) В Preferences > PHP > PHPUnit убедитесь, что ничего не установлено для файла конфигурации по умолчанию или файла начальной загрузки по умолчанию.

2) Создайте собственную конфигурацию PHPUnit с помощью Run > Edit Configurations > в подразделе Command Line и убедитесь, что:

a) установите Custom working directory: как /absolute/path/to/vendor.

b) установите флажок "Использовать альтернативный файл конфигурации" и установите его /absolute/path/to/vendor/your_app/(sub_app_if_applicable)/phpunit.xml.dist

Затем вы можете запустить любой тестовый класс в пакете, указав класс и файл, или просто установите флажок "Определено в файле конфигурации", чтобы запустить все из них в соответствии с конфигурацией.

Ответ 4

Внутри PHPUnit_Framework_TestSuite этот код существует в конструкторе:

if (!$theClass->isSubclassOf('PHPUnit_Framework_TestCase')) {
   throw new PHPUnit_Framework_Exception(
      'Class "' . $theClass->name . '" does not extend PHPUnit_Framework_TestCase.'
   );
}

Я вижу в вашем примере, который вы расширяете PHPUnit_Framework_TestCase, но ошибка говорит о том, что вы используете PHPUnit_Extensions_RepeatedTest, который расширяет PHPUnit_Extensions_TestDecorator, который в конечном счете расширяет PHPUnit_Framework_Assert

PHPUnit_Framework_Assert
   |
   --PHPUnit_Extensions_TestDecorator
      |
      --PHPUnit_Extensions_RepeatedTest

Дважды проверьте свои тесты, потому что ошибка указывает на то, что вы пытаетесь запустить TestSuite, используя тестовое расширение PHPUnit_Extensions_RepeatedTest. Вы пытались расширить PHUnit с помощью Test Decorators?

http://docs.tadiavo.com/phpunit/www.phpunit.de/pocket_guide/3.1/en/extending-phpunit.html

Это все советы, которые я могу предложить в настоящее время, не видя ваших фактических тестов и как вы их используете.