Usiłuję uruchomić jedną metodę testową o nazwie testSaveAndDrop
w pliku escalation/EscalationGroupTest.php
z phpunit
. Próbowałem następujących kombinacji:
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=escalation/EscalationGroupTest.php::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest.php::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=testSaveAndDrop
W każdym przypadku wszystkie metody testowe w pliku escalation/EscalationGroupTest.php
są wykonywane. Jak zamiast tego wybrać tylko JEDNĄ metodę?
Nazwa klasy to, EscalationGroupTest
a wersja phpunit
to 3.2.8.
Odpowiedzi:
Następujące polecenie uruchamia test na jednej metodzie:
W przypadku nowszych wersji phpunit jest to po prostu:
źródło
phpunit --filter methodName path/to/testing/file
nieClassName
.Wolę oznaczyć test w adnotacji jako
Następnie uruchom go z
Nie trzeba podawać pełnej ścieżki w wierszu poleceń, ale trzeba pamiętać o usunięciu jej przed zatwierdzeniem, aby nie zaśmiecać kodu.
Możesz także określić kilka grup dla jednego testu
źródło
@group failing, Integration
<phpunit>
: <groups><include> <group> failing </ group > </include> </groups>@depends
inny, więc musisz wskazać wszystkie połączone testy, a zatem użyć@group
adnotacji.Oto bardziej ogólna odpowiedź:
Jeśli masz pewność, że nazwa metody jest unikalna, możesz filtrować tylko według nazwy metody (to działa dla mnie)
Jednak bezpieczniej jest również podać ścieżkę / odniesienie do pliku
Przykład:
Szybka notatka: Zauważyłem, że jeśli mam funkcję o nazwie,
testSave
a inna funkcja o nazwietestSaveAndDrop
przy użyciu poleceniaphpunit --filter testSave
również się uruchomi,testSaveAndDrop
a każda inna funkcja, która zaczyna się odtestSave*
, to dziwne !!źródło
/testSave$/
Następujące polecenie wykona dokładnie
testSaveAndDrop
test.źródło
\b
zamiast$
ostatecznie załatwiło sprawę:--filter '/::testSaveAndDrop\b/'
.'/::testSaveAndDrop\b/'
i'/::testSaveAndDrop$/'
pracował dla mnie takphpunit --filter ClassName::methodName$
iphpunit --filter ClassName::methodName\b
(w systemie Linux)na wiele sposobów uruchom test phpunit w laravel ..
dla testu pojedynczej klasy:
dla pojedynczej metody testowej:
do uruchamiania testów ze wszystkich klas w przestrzeni nazw:
Aby uzyskać więcej informacji na temat przebiegu testu, zobacz więcej
źródło
Coś takiego
Bez
=
i z'
https://phpunit.de/manual/3.7/en/textui.html
źródło
EscalationGroupTest
są przetwarzane.--filter
do przed nazwą pliku i wszystko powinno działać poprawnie.No tests executed!
PHPUnit4.8.35
@ Schleis Jak dokładnie zmieniłeś polecenie?Przykład z niestandardową nazwą metody.
Przykład z testowym słowem kluczowym
źródło
Jeśli korzystasz z netbeans, możesz kliknąć metodę testową prawym przyciskiem myszy i kliknąć „Run Focused Test Method”.
źródło
Możesz spróbować tego, jestem w stanie uruchomić pojedyncze przypadki testowe
Na przykład:
Jeśli chcesz uruchomić pojedyncze przypadki testowe w Laravel 5.5 Try
Na przykład:
źródło
Powodem wszystkich testów jest to, że masz
--filter
flagę po nazwie pliku. PHPUnit w ogóle nie czyta opcji, a więc uruchamia wszystkie przypadki testowe.Z ekranu pomocy:
Przenieś więc
--filter
argument przed żądany plik testowy, jak wspomniano w odpowiedziach na @Alex i @Ferid Mövsümov. I powinieneś mieć tylko test, który chcesz uruchomić.źródło
--filter
opcja występowała po nazwie pliku. Pozostałe dwie odpowiedzi miały poprawną odpowiedź, ale nie wskazywały, dlaczego zastosowano filtr.Jeśli używasz pliku konfiguracyjnego XML, możesz dodać następujące elementy w
phpunit
znaczniku:Zobacz https://phpunit.de/manual/current/en/appendixes.configuration.html
źródło
Ale spóźniłem się na przyjęcie. Ale osobiście nie lubię pisać całej linii.
Zamiast tego korzystam z następujących skrótów w pliku .bash_profile. Upewnij się, że plik .bash_profile znajduje się w pliku po dodaniu nowego aliasu.
Stosowanie:
Jeśli korzystasz z programu Visual Studio Code , możesz użyć następującego pakietu, aby Twoje testy zakończyły się powodzeniem.
Następnie możesz ustawić przypisanie klawiszy w ustawieniach. Używam wiązania Command + T w moim MAC.
Teraz, gdy umieścisz kursor na dowolnej funkcji, a następnie użyjesz powiązania klawiszy, automatycznie uruchomi ten pojedynczy test.
Jeśli chcesz uruchomić całą klasę, umieść kursor nad klasą, a następnie użyj powiązania klawiszy.
Jeśli masz jakieś inne rzeczy, zawsze tweekuj z Terminalem
Happy Coding!
źródło
Musisz użyć opcji --filter, aby uruchomić jedną metodę testową
php phpunit --filter "/::testMethod( .*)?$/" ClassTest ClassTest.php
Powyższy filtr uruchomi testMethod sam.
źródło