czwartek, 16 października 2014

Gradle vs Maven integration test - comparison


W tym poście poznasz postawowe zasady konfiguracji testów w narzędziach jak Maven czy Gradle, które to wspomagają procesy wytwarzania softu.
Bardzo ważne jest rozróżnienie fazy integracji i testów jednostkowych. Integracja zazwyczaj trwa dłużej i nikt nie chce aby wykonywała się ona w czasie fazy testów jednostkowych. Zasady CI i oraz zasady tworzenia testów znajdziesz w moich poprzednich postach.  sd









Gradle :
uzupełniam sekcje sourceSet  o itTest

Oczywiście to się wiąże z utworzeniem odpowiednich katalogów :)
Następnie w sekcji dependencies dodaje :
Został do dodania tylko odpowiedni task, który będzie wyzwalał test.
Wynik (testuje na konsoli : gradle test i gradle itTest):

Maven :
Tworze profil : dzięki temu mogę np puszczać integration test z zwykłymi testami lub je blokować.
Podpinam źródła aby były ładnie widoczne w eclipse, a robię to tak (build helper)
Integration test : surfire plugin + failSafe plugin (odpowiada za uruchomienie testów integracyjnych)  : 

Odpalam testy poleceniami :  
   1. mvn integration-test -  uruchamia integracyjne
   2. mvn verify - sprawdza, czy testy  integracyjne zostały wykonane prawidłowo
   3. mvn test  - jednostkowe zwykłe.


Ważne jest odpowiednie zrozumienie faz :

pre-integration-test: w tej fazie możemy ustawić i przygotować odpowiednio zasoby.
integration-test: failsafe : odpalamy testy
post-integration-test: zwalnianie zasobów, czyszczenie


verify: failsafe odpala wszystkie  powyższe cele w swojej hierarchii. Normalne użycie bez przygotowanego profilu (jak to zrobić ->  patrz powyżej ), że zostaną odpalone zarówno testy jednostkowe jak i integracyjne.


Tip : mvn verify to dobra praktyka. Pozwala upewnić się, że post-integration-test przeprowadzi jeszcze fazę czyszczenia.

Różnica pomiędzy Surfire a failSafe jest taka, że ten pierwszy przerywa build jeśli test się nie wykona, failSafe pozwala na kontynuowania budowania do fazy czyszczenia.



Możemy przyjąć również inną strategię różnicowania testów, zamiast  rozdzielać testy do różnych zasobów (katalogów  - taką wersję ja polecam) zastosować strategię nazewnictwa np poprzez dodanie prefixu lub suffixu IT.



Posumowanie : Narzędzia te zostały stworzone dla Ciebie żeby Ci pomóc łatwiej zarządzać tym całym burdelem (czytaj procesem wytwarzania i budowy). Warto poświęcić trochę czasu i je odpowiednio skonfigurować to zaoszczędzi Ci czasu i nerwów na przyszłość. Określenie strategii testów jest bardzo ważne. Testy zawsze są nieodłączną częścią życia każdego projektów.

Pisanie dobrych testów nie jest proste. Zainwestowany czas w tę tematykę na pewno przyniesie wymierne korzyści zarówno dla projektu ja i może dla kieszeni. Patrz na tendencję na rynku pracy i jakiś skillów oczekują pracowawcy a zrozumiesz o czym mówię.




Brak komentarzy:

Prześlij komentarz