2013-04-12 25 views
18

Mam mały problem, gdy próbuję uruchomić test PHPUnit w IDE PhpStorm.Błąd podczas próby uruchomienia PHPUnit z PhpStorm

używam plik kompozytor, który wygląda:

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

Teraz, gdy uruchomię testu I recive wyjątek: PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.'

Co jest nie tak? Kiedy włączyłem test wersji zainstalowanej gruszki, działa OK.

// EDIT Przykładowa klasa Test:

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

// EDIT2 Ślad:

/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

Czy możesz pokazać swój test jednostki? Czy twoja klasa testowa rozszerza PHPUnit_Framework_TestCase? –

+1

Edytuję moje pytanie i dodaję przykładową klasę testową. Mam kilka klas testowych. –

Odpowiedz

12

Znalazłem rozwiązanie tego problemu.

W Edytowaniu konfiguracji w katalogu ustawiam ścieżkę do mojego katalogu testów (/path/to/my/project/tests), po tym czasie testy będą działać poprawnie.

+2

Należy zauważyć, że ścieżka musi być ustawiona poprzez: 'Uruchom> Edytuj konfigurację> PhpUnit' Tam można ustawić' Katalog'. Nie (!) Znajdź to w "Plik> Ustawienia" w PhpStorm. – k0pernikus

0

Wewnątrz PHPUnit_Framework_TestSuite ten kod exists in the constructor:

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

widzę w swoim przykładzie które rozciągają PHPUnit_Framework_TestCaseale błąd sugeruje używasz PHPUnit_Extensions_RepeatedTest która rozciąga PHPUnit_Extensions_TestDecorator które ostatecznie rozszerza PHPUnit_Framework_Assert

PHPUnit_Framework_Assert 
    | 
    --PHPUnit_Extensions_TestDecorator 
     | 
     --PHPUnit_Extensions_RepeatedTest 

dokładnie sprawdzić czy testy ponieważ błąd sugeruje próbujesz uruchomić TestSuite za pomocą testu rozszerzającego PHPUnit_Extensions_RepeatedTest. Czy zamiast tego próbowałeś rozszerzyć PHUnit za pomocą Test dekoratorów?

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

To wszystko rada obecnie mogę zaoferować, nie widząc swoich rzeczywistych testów i jak się je uruchomiony.

+0

OK, ale dlaczego po uruchomieniu testu z konsoli wszystko jest w porządku? Jestem pewien, że mój test jest dobry. Kiedy używam PHPUnit jako włączającego bibliotekę zewnętrzną i ustawioną odpowiednią konfigurację w PhpStorm działa dobrze. –

+0

Twoje pytanie stwierdziło, że nie działa ono w PHPStorm. Być może masz skonfigurowane IDE niepoprawnie i teraz działa? –

+0

Byłem skonfigurować IDE jak w instrukcji. Zależność dodaję pomyślnie, a następnie ustawię niestandardowy program ładujący na 'vendor/autoload.php'. To wszystko, co zrobiłem. –

5

Mam taki sam problem podczas korzystania z kompozytora.

Rozwiązaniem jest umieszczenie pliku testowego we własnym katalogu. Oto mój działający phpunit, umieszczam cały mój test w katalogu 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> 

Mam nadzieję, że rozwiązuje jeśli ktoś ma ten sam problem .. :)

5

To co pracował dla mnie, dzięki odpowiedź Piotra powyżej, ale mam zapewnienie z nieco bardziej dokładnym szczegółowo wszystkie kroki musiałem zrobić:

kroki, aby to działało (test w PHPStorm 8.0.1):

1) wPreferences > PHP > PHPUnitupewnić się, że nic nie jest w domyślnej konfiguracji f ile lub domyślny plik bootstrap.

2) Dodać niestandardową konfigurację PHPUnit poprzezRun > Edit Configurations >wCommand Linepodrozdziale, i upewnij się, że:

a) ustalićCustom working directory:być/absolute/path/to/vendor.

b) sprawdzić „Użyj innego pliku konfiguracyjnego:” i ustaw go na/absolute/path/to/vendor/your_app/(sub_app_if_applicable)/phpunit.xml.dist

Następnie można uruchomić dowolną klasę testową pakietu określając klasę i plik, lub po prostu sprawdzić „zdefiniowanymi w konfiguracji file ", aby uruchomić je wszystkie zgodnie z konfiguracją.

Powiązane problemy