Ответ 1
Я нашел решение этой проблемы.
В разделе "Редактирование конфигураций в каталоге" я установил путь к каталогу моих тестов (/path/to/my/project/tests
) после правильной работы этих тестов.
У меня мало проблем, когда я пытаюсь запустить тест 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
Я нашел решение этой проблемы.
В разделе "Редактирование конфигураций в каталоге" я установил путь к каталогу моих тестов (/path/to/my/project/tests
) после правильной работы этих тестов.
У меня такая же проблема при использовании композитора.
Решение состоит в том, чтобы поместить ваш тестовый файл в свой собственный каталог. Вот мой рабочий 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>
Надеюсь, он решает, если у кого-то такая же проблема..:)
Это то, что сработало для меня, благодаря ответу Петра выше, но я предоставляю более детальную информацию о всех шагах, которые я должен был сделать:
Шаги, чтобы заставить его работать (тест в 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
Затем вы можете запустить любой тестовый класс в пакете, указав класс и файл, или просто установите флажок "Определено в файле конфигурации", чтобы запустить все из них в соответствии с конфигурацией.
Внутри 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
Это все советы, которые я могу предложить в настоящее время, не видя ваших фактических тестов и как вы их используете.