2013-04-12 2 views
18

У меня мало проблем, когда я пытаюсь запустить тест PHPUnit в среде IDE PhpStorm.Ошибка при попытке запустить PHPUnit из 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.'

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

// EDIT Пример тестового класса:

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 
+1

Можете ли вы показать свой модульный тест? Расширяет ли ваш тестовый класс PHPUnit_Framework_TestCase? –

+1

Я редактирую свой вопрос и добавляю образец тестового класса. У меня мало тестовых классов. –

ответ

12

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

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

+2

Важно отметить, что путь должен быть задан с помощью: 'Run> Edit Configuration> PhpUnit' Там может быть установлен каталог. Вы не (!) Находите это под 'File> Settings' в PhpStorm. – k0pernikus

0

Внутри PHPUnit_Framework_TestSuite этот код exists in the constructor:

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

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

+0

ОК, но почему, когда я запускаю тест с консоли, все в порядке? Я совершенно уверен, что мой тест хорош. Когда я использую PHPUnit, включая внешнюю библиотеку и соответствующую настройку в PhpStorm, отлично работает. –

+0

В вашем вопросе указано, что он не работает в PHPStorm. Возможно, вы неправильно настроили IDE, и теперь это работает? –

+0

Я настраивал IDE как в руководстве. Я успешно добавляю зависимость, тогда я устанавливаю пользовательский загрузчик на 'vendor/autoload.php'. Это все, что я сделал. –

5

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

Решение состоит в том, чтобы поместить тестовый файл в свой собственный каталог. Вот мой рабочий 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> 

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

5

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

шаги, чтобы сделать его работу (тест в PhpStorm 8.0.1):

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

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

а) установитьCustom working directory:быть/absolute/path/to/vendor.

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

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

Смежные вопросы