Maven, a testy integracyjne usług

0

Witam,
Chcę wejść w temat testów integracyjnych.

Widziałem np. jak ludzie testowali usługi z poziomu JUnit np. przez stworzenie HttpClient i wywołanie usługi RESTowej (np. podłączenie się do niej i pobranie JSONa). IMO dość kontrowersyjne. Generalnie SoapUI jest wygodniejszy do takich operacji, ale pewne rzeczy być może wygodnie w ten sposób wytestować.

Jak wiadomo maven dba o odpalenie testów przy każdej kompilacji. Ma to sens w przypadku testów jednostkowych, które są niezależne od dostępnego środowiska, danych w systemie itp. Każdy test wykonywany jest niezależnie.

Wchodząc w temat testów integracyjnych chciałbym tworzyć dla nich oddzielne, niezależne cele i struktury katalogów. Ważne, aby cel był wołany na żądanie, a nie podczas cyklu życia przy każdym deployu (ponieważ wiele operacji może trwać bardzo długo).

Testy jednostkowe pozostawiam standardowo w src/test i uruchamiam zawsze.

Testy z użyciem Arquillian chcę przechowywać w oddzielnym folderze src/testarquillian, a dziwne rzeczy z HttpClient w src/testhttpclientresources.

  1. Jaki plugin mavena nadaje się najlepiej do tego celu?
  2. Czy mój pomysł ma sens?
  3. Czy spotykacie podobne rozwiązania w projektach, w których pracujecie?

Pozdrawiam,

0

ad 2. Ma sens, ale potrzebujesz innej implementacji. O tym niżej
ad 1. Profile wystarczą. Plus pewno plugin do arquilliana.
ad 3. Konfigurujesz sobie serwer ciągłej integracji. Na nim masz różne buildy

  • podstawowy w którym odpalane są unity. Tu wyzwalaczem buildu jest każda zmiana w repo. Zgodnie z zasadą, ze każdy commit powinien być przetestowany.
  • integracyjny. Wyzwalacz może być czasowo-commitowy - co dwie godziny sprawdzaj repo i jak są zmiany to buduj wraz z integracyjnymi.
  • clean code - tu odpalasz weryfikację pokrycia, findbuga. Wyzwalane ręcznie.

Swoją drogą TestNG jest lepszy do tego typu zabaw niż JUnit, bo ma znacznie bardziej rozbudowane możliwości zarządzania grupowaniem testów.
Znacznie prostsze jest tu wołanie testów należących do jednej grupy, czy też zwyczajnie - po nazwie.

0

Niestety, obecnie pracuje z JUnit. Przy testach jednostkowych sprawdza się dobrze, konieczne jest jednak doinstalowanie JUnit Params oraz Mockito (dla usług).

Na pewno wypróbuje kiedyś TestNG, będzie to chyba jednak przy następnym projekcie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1