Mam kilka testsuites
(PHPUnit-Selenium, PHPUnit), chcę je uruchomićw określonej kolejności. Tak więc chcę uruchomić pakiet testowy "zainstaluj (napędzany selenem)", a następnie "zestaw testów jednostkowych". Wiem, że powinienem unikać zależności w testach jednostkowych, ale moje pytanie nie dotyczy tego (pracuję ze starszą aplikacją z wieloma zależnościami, potrzebuję instalacji i przetestuję to połączenie z selenem, a następnie uruchom testy jednostkowe, itp.).
Tak więc, nie potrzebuję konkretnego zamówienia na moje "przypadki testowe", jest to w porządku, ale tylko dla moich "zestawów testowych". Tutaj jest mój phpunit.xml
plik konfiguracyjny :
<phpunit backupGlobals="false">
<selenium>
<browser name="Firefox" browser="*firefox" timeout="600" />
</selenium>
<testsuites>
<testsuite name="install (selenium driven)">
<file>./_install.php</file>
<exclude>./bin</exclude>
</testsuite>
<testsuite name="unit tests">
<directory>./</directory>
<exclude>./selenium</exclude>
</testsuite>
</testsuites>
</phpunit>
Kiedy uruchamiam phpunit, wydaje się, że nie czekadla wyniku "zainstaluj (napędzanego selenem)", więc "testy jednostkowe" zawodzą (błąd MySQL, ale nieważne). Jak sobie z tym poradzić? Chciałbym dwóch oddzielnych kroków:
- Uruchom pakiet testowy "zainstaluj (sterowany selenem)"
- Uruchom pakiet testowy "testów jednostkowych"
Inne informacje :
- Mam wiele plików testCase, więc nie chcę ich określać
- Wiem, że powinienem unikać
backupGlobals=false
też, przepraszam, mogę "t :( ... - Wiem, że
bootstrap
opcja, ale muszę "przetestować" instalację (więc jest to pakiet testowy)
Wielkie dzięki, jeśli masz wskazówkę! (Próbowałem znaleźć rozwiązanie, ale nie znalazłem na razie ...)
Odpowiedzi:
1 dla odpowiedzi № 1Komentarz Stevena Scotta do korzystania z pliku wsadowego, orazdwa pliki konfiguracyjne byłyby tym, co bym zrobił. Wynika to z filozofii Unix polegającej na użyciu prostych narzędzi do łączenia prostych narzędzi, a nie jednego dużego, kompleksowego narzędzia, które robi wszystko.
Oto alternatywa, oparta na domysłach"instalacja" to nie tylko wykonywanie testów funkcjonalnych, ale także konfigurowanie DB i innych urządzeń wymaganych przez testy jednostkowe. A co powiesz na przeniesienie testów funkcjonalnych do wersji setupBeforeClass()
zadzwoń do twojego zestawu testów jednostkowych. Posługiwać się shell_exec()
uruchomić phpunit, aby uruchomić testy funkcjonalne, a jeśli się nie powiedzie, to zadzwoń die
lub podobne, aby testy jednostkowe nie działały.
P.S. Brzmisz, jakbyś wiedział, co robisz, ale dla każdego, kto przyjdzie później: gdy masz szansę, testy jednostkowe powinny zostać refaktoryzowane, aby użyć fałszywego DB, aby mogły być uruchamiane jako pierwsze i często. Nadal zachowuj swój istniejący zestaw testów jednostkowych, ale połącz go z pakietem testów funkcjonalnych, ponieważ wygląda na to, że należy do niego. W rzeczywistości to (połączenie dwóch zestawów testów, a następnie użycie jawnego @depends
wszędzie) to inne podejście.