Uruchom testy za pomocą wiersza poleceń phpunit. Ładuje niezbędne zajęcia.
Halfstop
Możesz również użyć odpowiedzi z następującej odpowiedzi stackoverflow.com/questions/42811164/ ..., aby zachować zgodność kodu z PHPUnit 6, jak również z wcześniejszymi wersjami.
Robson
Odpowiedzi:
73
Dokumentacja PHPUnit mówi, że zawiera / wymaga PHPUnit / Framework.php, w następujący sposób:
require_once ('PHPUnit/Framework/TestCase.php');
AKTUALIZACJA
Od PHPUnit 3.5 jest wbudowana klasa autoloadera, która zajmie się tym za Ciebie:
Dla tych, którzy przyjeżdżają tutaj po aktualizacji phpunita do wersji 6 lub nowszej wydanej w dniu 2017-02-03 (np. W przypadku programu composer), może pojawić się ten błąd, ponieważ kod phpunita ma teraz przestrzeń nazw (sprawdź dziennik zmian ).
Trzeba będzie byłaby rzeczy, jak \PHPUnit_Framework_TestCasena\PHPUnit\Framework\TestCase
Dzięki, miałem ten problem, ponieważ Travis CI używał najnowszej wersji PHPUnit w swoich kompilacjach PHP 7. Moją poprawką było ręczne pobranie starego phara i użycie go zamiast tego.
Dziękuję uprzejmie, dobry panie. Rzeczywiście przybywam tutaj po aktualizacji do wersji 6.
h4ckNinja
Byłem naprawdę zirytowany, że moje testy nagle przestały działać. Zrobiłem aktualizację kompozytora i zaktualizowałem mój PHPunit do wersji 6.1. Dziękuję Ci.
Jed Lynch
38
W przypadku wyższej wersji phpunita, takiej jak 6.4,
musisz użyć przestrzeni nazw PHPUnit \ Framework \ TestCase
użyj TestCase zamiast PHPUnit_Framework_TestCase
// use the following namespaceusePHPUnit\Framework\TestCase;// extend using TestCase instead PHPUnit_Framework_TestCaseclassSampleTestextendsTestCase{}
Świetnie, to zadziałało dla mnie, ponieważ korzystałem ze starego samouczka
właśnie skopiowałeś odpowiedź Shadiego
Adam
@Adam, kto jest shadi?
Jijesh Cherrai,
Nie wiem czegoś takiego. Mam ten sam błąd, a następnie sprawdzam odpowiedź, łamiąc pakiet
Jijesh Cherrai
13
Możesz otrzymać ten błąd, ponieważ utworzyłeś przestrzeń nazw pliku. Jeśli tak, musisz określić, że PHPUnit_Framework_TestCase znajduje się w globalnej przestrzeni nazw, poprzedzając ją odwrotnym ukośnikiem:
Tak, jeśli zrobiłeś to: class YourNiceTest extends PHPUnit_Framework_TestCasepo prostu dodaj \ przed klasą rozszerzoną, jak w class YourNiceTest extends \PHPUnit_Framework_TestCase- To zadziałało dla mnie, używając Symfony 2.8i włączając do phpunitpliku kompozytora pobranego jako zależność lokalna z"phpunit/phpunit": "^4.8"
Xavi Montero
12
Przeprowadzałem testy PHPUnit na PHP5, a potem musiałem również obsługiwać PHP7. Oto co zrobiłem:
W pliku composer.json:
"phpunit/phpunit":"~4.8|~5.7"
W moim pliku bootstrap PHPUnit (w moim przypadku /tests/bootstrap.php):
// PHPUnit 6 introduced a breaking change that// removed PHPUnit_Framework_TestCase as a base class,// and replaced it with \PHPUnit\Framework\TestCaseif(!class_exists('\PHPUnit_Framework_TestCase')&& class_exists('\PHPUnit\Framework\TestCase'))
class_alias('\PHPUnit\Framework\TestCase','\PHPUnit_Framework_TestCase');
Innymi słowy, zadziała to w przypadku testów napisanych pierwotnie dla PHPUnit 4 lub 5, ale później również potrzebne do pracy z PHPUnit 6.
To już nie działa, ponieważ ostatnio uruchamiane PHPUnit nie obsługuje już starych nazw klas, takich jak PHPUnit_Framework_TestCase. Naprawdę musisz użyć... extends PHPUnit\Framework\TestCase
Mikko Rantalainen
Po prostu mówię, że musiałem najpierw, mv phpunit /usr/local/bin/phpunita potem sudo chmod +x /usr/local/bin/phpunit. Ustawienie pliku jako wykonywalnego przed przeniesieniem nigdy nie działało na Vagrant Ubuntu. Nie mam pojęcia, dlaczego ... Ale na wypadek, gdyby ktoś się z tym zmagał, mam nadzieję, że to pomoże.
George Mylonas
4
Założenie:
Phpunit (3.7) jest dostępny w środowisku konsoli.
Akcja:
Wpisz w konsoli następującą komendę:
SHELL> phpunit "{{PATH TO THE FILE}}"
Uwagi:
Nie musisz niczego dołączać do nowych wersji PHPUnit, chyba że nie chcesz działać w konsoli. Na przykład uruchamianie testów w przeglądarce.
Jeśli masz Centosa lub inną dystrybucję Linuksa, musisz zainstalować pakiet phpunit, zrobiłem to za pomocą yum install phpunit i zadziałało. Może trzeba będzie dodać repozytorium, ale myślę, że musi działać płynnie z domyślnymi (mam CentOS 7)
Możliwe, że przeprowadzasz podstawowe testy WordPress i niedawno zaktualizowałeś swój PhpUnit do wersji 6. Jeśli tak jest, to ostatnia zmiana w przestrzeni nazw w PhpUnit zepsuje twój kod.
Na szczęście na https://core.trac.wordpress.org/changeset/40547 dostępna jest łatka do podstawowych testów, która obejdzie problem. Zawiera także zmiany w travis.yml, których możesz nie mieć w swojej konfiguracji; jeśli tak jest, musisz edytować plik .diff, aby zignorować poprawkę Travisa.
Zapisz różnicę w katalogu nad katalogiem / obejmuje / - w moim przypadku był to sam katalog Wordpress
Użyj narzędzia łatki Unix, aby załatać pliki. Będziesz także musiał usunąć kilka pierwszych ukośników, aby przejść z bezwzględnej do względnej struktury katalogów. Jak widać z punktu 3 powyżej, przed katalogiem include znajduje się pięć ukośników, których flaga -p5 zostanie usunięta.
$ cd [WORDPRESS DIRECTORY]
$ patch -p5 < changeset_40547.diff
Po wykonaniu tej czynności moje testy ponownie przebiegły poprawnie.
UWAGA: Polecenie php bin/console generate:doctrine:crudrównież tworzy TestControllerw, src/Testswięc może zgłaszać błąd podczas próby uruchomienia serwera, jeśli go nie masz UnitTests. Usuń plik, napraw to!
Odpowiedzi:
Dokumentacja PHPUnit
mówi,że zawiera / wymaga PHPUnit / Framework.php, w następujący sposób:AKTUALIZACJA
Od PHPUnit 3.5 jest wbudowana klasa autoloadera, która zajmie się tym za Ciebie:
Dzięki dla Phoenix za wskazanie tego!
źródło
require_once 'PHPUnit/Autoload.php'
PHPUnit/Autoload.php
iPHPUnit/Framework/TestCase.php
mój folder jest coś w rodzajuPHPUnit/Framework/MockObject
PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Autoload.php'
Dla tych, którzy przyjeżdżają tutaj po aktualizacji phpunita do wersji 6 lub nowszej wydanej w dniu 2017-02-03 (np. W przypadku programu composer), może pojawić się ten błąd, ponieważ kod phpunita ma teraz przestrzeń nazw (sprawdź dziennik zmian ).
Trzeba będzie byłaby rzeczy, jak
\PHPUnit_Framework_TestCase
na\PHPUnit\Framework\TestCase
źródło
W przypadku wyższej wersji phpunita, takiej jak 6.4, musisz użyć przestrzeni nazw PHPUnit \ Framework \ TestCase
użyj TestCase zamiast PHPUnit_Framework_TestCase
źródło
Możesz otrzymać ten błąd, ponieważ utworzyłeś przestrzeń nazw pliku. Jeśli tak, musisz określić, że PHPUnit_Framework_TestCase znajduje się w globalnej przestrzeni nazw, poprzedzając ją odwrotnym ukośnikiem:
Złożyłem prymitywny PR, aby rozpocząć rozmowę o poprawieniu dokumentacji .
źródło
class YourNiceTest extends PHPUnit_Framework_TestCase
po prostu dodaj \ przed klasą rozszerzoną, jak wclass YourNiceTest extends \PHPUnit_Framework_TestCase
- To zadziałało dla mnie, używającSymfony 2.8
i włączając dophpunit
pliku kompozytora pobranego jako zależność lokalna z"phpunit/phpunit": "^4.8"
Przeprowadzałem testy PHPUnit na PHP5, a potem musiałem również obsługiwać PHP7. Oto co zrobiłem:
W pliku composer.json:
W moim pliku bootstrap PHPUnit (w moim przypadku
/tests/bootstrap.php
):Innymi słowy, zadziała to w przypadku testów napisanych pierwotnie dla PHPUnit 4 lub 5, ale później również potrzebne do pracy z PHPUnit 6.
źródło
Możesz po prostu zainstalować PHPUnit, aby uruchamiać polecenia ( https://github.com/sebastianbergmann/phpunit/#php-archive-phar ):
Uruchom pojedynczy test
Następnie uruchom test PHPunit:
Zawartość pliku testowego jest następująca:
Uruchom zestaw testów
Konfiguracja zestawu testów: demosuite.xml.
demo
to katalog zawierający wszystkie testy. Pliki testowe muszą mieć nazwę*_test.php
(suffix
).Zestaw testów działa z następującymi poleceniami:
źródło
PHPUnit_Framework_TestCase
. Naprawdę musisz użyć... extends PHPUnit\Framework\TestCase
mv phpunit /usr/local/bin/phpunit
a potemsudo chmod +x /usr/local/bin/phpunit
. Ustawienie pliku jako wykonywalnego przed przeniesieniem nigdy nie działało na Vagrant Ubuntu. Nie mam pojęcia, dlaczego ... Ale na wypadek, gdyby ktoś się z tym zmagał, mam nadzieję, że to pomoże.Założenie:
Akcja:
Wpisz w konsoli następującą komendę:
Uwagi:
Nie musisz niczego dołączać do nowych wersji PHPUnit, chyba że nie chcesz działać w konsoli. Na przykład uruchamianie testów w przeglądarce.
źródło
Używam ZF2 i pracuję dla mnie po zastąpieniu „PHPUnit_Framework_TestCase” na „\ PHPUnit \ Framework \ TestCase”
źródło
Jeśli masz Centosa lub inną dystrybucję Linuksa, musisz zainstalować pakiet phpunit, zrobiłem to za pomocą yum install phpunit i zadziałało. Może trzeba będzie dodać repozytorium, ale myślę, że musi działać płynnie z domyślnymi (mam CentOS 7)
źródło
Możliwe, że przeprowadzasz podstawowe testy WordPress i niedawno zaktualizowałeś swój PhpUnit do wersji 6. Jeśli tak jest, to ostatnia zmiana w przestrzeni nazw w PhpUnit zepsuje twój kod.
Na szczęście na https://core.trac.wordpress.org/changeset/40547 dostępna jest łatka do podstawowych testów, która obejdzie problem. Zawiera także zmiany w travis.yml, których możesz nie mieć w swojej konfiguracji; jeśli tak jest, musisz edytować plik .diff, aby zignorować poprawkę Travisa.
Edytuj plik poprawki, aby usunąć część Travisa z łatki, jeśli tego nie potrzebujesz. Usuń od początku pliku do miejsca tuż nad tą linią:
Zapisz różnicę w katalogu nad katalogiem / obejmuje / - w moim przypadku był to sam katalog Wordpress
Użyj narzędzia łatki Unix, aby załatać pliki. Będziesz także musiał usunąć kilka pierwszych ukośników, aby przejść z bezwzględnej do względnej struktury katalogów. Jak widać z punktu 3 powyżej, przed katalogiem include znajduje się pięć ukośników, których flaga -p5 zostanie usunięta.
Po wykonaniu tej czynności moje testy ponownie przebiegły poprawnie.
źródło
UWAGA: Polecenie
php bin/console generate:doctrine:crud
również tworzyTestController
w,src/Tests
więc może zgłaszać błąd podczas próby uruchomienia serwera, jeśli go nie maszUnitTests
. Usuń plik, napraw to!źródło
Dla mnie to dlatego, że biegałem
zamiast
kiedy miałem już skonfigurowany
phpunit.xml
plik w katalogu roboczym.źródło
Używam php 5.6 w oknie 10 z wersją zend 1.12 do dodania
przed
pracował. Musimy dodać powyższą instrukcję w pliku ControllerTestCase.php
źródło