/ / PHPUnit: Wykonaj testSuites w określonej kolejności - php, selen, phpunit

PHPUnit: Wykonaj testSuites w określonej kolejności - php, selen, phpunit

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:

  1. Uruchom pakiet testowy "zainstaluj (sterowany selenem)"
  2. 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 № 1

Komentarz 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.