2009-09-12 14 views
6

Mam klasy test PHPUnit, które chciałbym zostać zignorowany z uruchomienia testu. Wiem, że mogę to zrobić, zmieniając jego nazwę tak, aby nie zawierała słowa Test w nazwie pliku, ale wolałbym tego nie robić, ponieważ zamąci to bardziej niż ja.Co PHPUnit ignorować rzeczy?

Czy ktoś ma sugestię?

Odpowiedz

15

Istnieje kilka opcji dla komendy phpunit które mogą pomóc określić, które testy powinny i nie powinny być prowadzone:

$ phpunit --help 
PHPUnit 3.4.0beta5 by Sebastian Bergmann. 

Usage: phpunit [switches] UnitTest [UnitTest.php] 
     phpunit [switches] <directory> 
... 
    --filter <pattern>  Filter which tests to run. 
    --group ...    Only runs tests from the specified group(s). 
    --exclude-group ...  Exclude tests from the specified group(s). 
    --list-groups   List available test groups. 
... 

Ci nie będą prawdopodobnie pozwalają określić dokładnie co chciałeś ... Ale mogą pomóc.

Aby uzyskać więcej informacji, zobacz The Command-Line Test Runner


Zwłaszcza, I niby lubią funkcji grupowej: wystarczy użyć @group tag w PHPDoc swoich badań, aby ponownie grupę im (na przykład jedna grupa za "fragment funkcjonalności"); i, po, można użyć opcji --group lub --exclude-group w wierszu poleceń, aby określić, które testy powinny lub nie powinny być uruchamiane.

W twoim przypadku, jeśli nie możesz zmodyfikować testów, może opcja --filter może pomóc, w zależności od tego, jak twoje testy są nazywane (tj., Jeśli istnieje sposób identyfikacji tych, które chcesz uruchomić):

--filter
Tylko uruchamia testy, których nazwa pasuje do podanego wzorca. Wzorzec ten może być nazwą pojedynczego testu lub wyrażeniem regularnym, które jest zgodne z wieloma testowymi nazwami .


Innym rozwiązaniem, jeśli nie zawsze są zmiany „grupy” testów do pracy, może być użycie test-pakiet, który zawiera tylko testy, które chcesz uruchomić. Na przykład Composing a Test Suite Using XML Configuration.

+0

Adnotacja grupy dobrze się sprawdzi. Dzięki. –

+0

Nie ma za co :-) Baw się dobrze! –

+0

Ustawiłem '@group slow' na wszystkich moich powolnych testach i użyłem pliku' phpunit.xml', aby je domyślnie wyłączyć. Jeśli chcę dołączyć je ponownie, po prostu uruchom 'phpunit --no-configuration --group slow'. – dave1010

1

Przeszukałem całą instrukcję PHPUnit i nie znalazłem nic. Możesz zignorować kod do celów pokrycia testowego, ale o to chodzi. Jednak ten ChangeLog (w widocznym widelcu) wspomina, że ​​będzie "Ignorować nazwy plików testowych poprzedzone prefiksem ." Nie próbowałem tego, ale warto spróbować. Lub możesz skomentować test. Zakładam, że chciałbyś, aby coś takiego jak NUnit zaoferowało, gdzie zgłosi ignorowane testy; Nic takiego nie znalazłem.

+0

Dzięki za badania, już to zrobiłem, ale zmiana nazwy pliku nie jest czymś, co robię. –

+0

* które są poprzedzone prefiksem. * Jaki jest przedrostek? Kropka? –

+0

Tak, '.'. Poprawiono również przerwany link. – TrueWill

4

Zdaję sobie sprawę, że jest to stare pytanie z zaakceptowaną odpowiedzią, więc mam nadzieję, że nie będę się wtrącał, ale chciałem wskazać na zakończenie, że jest możliwe skip tests. Niekompletne i pomijane testy nie są wykonywane przez PHPUnit.

Oczywiście jest to na poziomie testu - można go jednak skonsolidować, umieszczając go w klasie "setUp().

Tylko heads-up.

+0

Schludny pomysł. Będę o tym pamiętać. –

+0

Należy pamiętać, że urządzenia są nadal wstawiane do pominiętych testów, które mogą być jedną z wolniejszych części testów uruchomionych –

6

po prostu zmienić nazwę metody:

testFunctionality() {// bla }

do

ignore_ testFunctionality() {// bla }

1

Wolę używać normalnych nazw dla moich funkcji i wstawić funkcję docBloc

Tak więc, gdy nie chcę, aby ten test był uruchamiany, po prostu usunę ten @ test. Być może znajdziesz tu coś użytecznego. PHPUnit - The XML Configuration File Dodałem w testach tagów "wyklucz", że nie chciałem być objęty phpunit.