2011-11-15 11 views
9

zainstalowałem PHPUnit i moją klasę test wygląda tak:klasy PHP problem rozwiązać dla klas w tym samym katalogu, gdy uruchomiony phpunit przypadków testowych

require_once 'PHPUnit/Framework/TestCase.php'; 

class Test extends PHPUnit_Framework_TestCase {...} 

Kiedy wykonać skrypt PHP w Eclipse, pojawia się następujący błąd :

Fatal error: Class 'PHPUnit_Framework_Assert' not found in .../PEAR/PHPUnit/Framework/TestCase.php on line 99

Więc stworzył test ogólny PHP classloading:

  • a.php i B.php w tym samym katalogu

a.php:

class AA {} 

B.php:

class BB extends AA {} 
new BB(); 

Podczas wykonywania skryptu PHP B.php uzyskać ten sam błąd:

Fatal error: Class 'AA' not found in .../B.php on line 2

Nie musi być opcją dla PHP, aby móc rozwiązać te klasy, w przeciwnym razie PHPUnit nie mógłby działać. Jakieś pomysły?

Dziękuję.

+2

jak można wykonać badania? PHPUnit to narzędzie linii poleceń. Jeśli użyjesz go w ten sposób, zainstaluje on własny autoloader, więc zwykle nie musisz niczego wymagać, dopóki PEAR jest w twojej ścieżce include_path. Gdy uruchomisz go z Eclipse, upewnij się, że "Uruchom jako test PHPUnit", a nie tylko jako skrypt. – Gordon

+0

Tak, dziękuję. Wyobraziłem to chwilę po tym, jak opublikowałem tutaj moje pytanie. :) – user498380

+0

chcesz, żebym wysłał to jako odpowiedź, abyś mógł zaakceptować to jako rozwiązanie? – Gordon

Odpowiedz

6

Nie powinno być ładowanie/wymagają

require_once 'PHPUnit/Framework/TestCase.php'; 

w badaniach w ogóle. Normalny biegacz phpunit powinien być w stanie to rozgryźć.

Zazwyczaj Idy powinien dba o ustawienie PHPUnit poprawnie (lub powołując go poprawnie), ale jeśli to nie wypali wymagające

require_once 'PHPUnit/Autoload.php'; 

To powinno załatwić sprawę potem jak to co jest potrzebne, aby PHPUnit działa

+0

Dziękuję. Istnieje rozszerzenie PHPUnit dla PTI, ale z jakiegoś powodu ten nie działa na moim Eclipse. Jednak po prostu użyję phpunit z linii poleceń. – user498380

+0

Może to ma związek z PHPUnit 3.6. Z tego, co widziałem, PTI zwykle działa całkiem nieźle :) --- Anyways: Jeśli twój problem został rozwiązany, zaznacz jedną z odpowiedzi jako "zaakceptowaną" (zaznacz tekst do jednej z odpowiedzi), aby poinformować, że Twój problem został rozwiązany i że mogą spojrzeć na inne pytanie. – edorian

+0

Myślę, że jedną z przyczyn tego jest fakt, że jedno z pierwszych ćwiczeń w podręczniku PHPUnit instruuje cię do tego. Następnie pojawia się ten błąd i kończy się na stronie przepełnienia stosu (tak znalazłem BTW). –

0

Wpadłem na ten problem podczas integracji z NetBeans. Rozwiązaniem dla mnie było załadowanie pliku bootstrap.php, który zawierałby wszystkie niezbędne zależności, pozostawiając pliki klas nietknięte.

Oops: Właśnie zdałem sobie sprawę, że używasz Eclipse. Powinno być całkiem podobne. Problem polega na tym, że twój skrypt dołączania jest względny w stosunku do katalogu roboczego Eclipse (lub innego katalogu, niż zazwyczaj uruchamiana przez ciebie aplikacja). Ale to stab w ciemności, nie będąc zbyt zaznajomieni z Eclipse sam ...

0

W przypadku użycia PHPUnit 6.x klasa PHPUnit_Framework_Assert została usunięta. Zamiast tego należy użyć przestrzeni nazw lub przejść na wersję ~4.5.

więc zastąpić PHPUnit_Framework_Assert z \PHPUnit\Framework\Assert, zestawienie ot wykorzystanie takich jak:

use PHPUnit\Framework\Assert; 

I użyć dochodzić bezpośrednio, na przykład Assert::assertNotEmpty(...);.

Źródło: Class 'PHPUnit_Framework_Assert' not found (Behat\Testwork\Call\Exception\FatalThrowableError #2585

Powiązane problemy