JUnit to TestNG: czy warto?

0

Witam,
W średniej wielkości projekcie JEE, w którym od jakiegoś czasu z powodzeniem stosujemy testy jednotkowe mamy zestaw: JUnit, JUnit Params i Mockito.

Wszystko nam pięknie działa. Zastanawiam się nad migracją do TestNG, ponieważ:

  1. Większe możliwości na przyszłość (Selenium, grupowanie testów niejednostkowych).
  2. W tej chwili mamy kilkaset testów (wraz z utrzymaniem i nowymi funkcjonalnościami ich liczba będzie rosła).
  3. W przyszłości chcielibyśmy wypróbować testy integracyjne i Arquilliana.

Moje obawy:

  1. W JUnit każdy @Test odpalany jest w izolacji. Czy domyślnie TestNG zachowuje się dokładnie w taki sam sposób? To jest moja główna obawa. Wiem, że mogę wprowadzać zależności między testami (np. odpalić warunkowo pewne testy tylko wtedy, gdy pewien test się powiódł, co ma sens w przypadku testów integracyjnych). Czy domyślnie jednak każdy test jest odpalany w izolacji (zależy mi, aby stan początkowy przed każdym testem był dokładnie taki jak w metodzie @Before).
  2. Rozumiem, że w przypadku Mockito raczej nie trzeba nic migrować.
  3. Potencjalny problem to JUnit Params. Wiem, że TestNG ma analogiczne rozwiązanie wbudowane, jednak spodziewam się pewnego nakładu pracy. Chyba, że jest jakiś sposób, aby TestNG zrozumiał format testów parametrycznych z JUnit Params (@Parameters(method = "nazwa_metody)). Wiem, że jest analogiczna konstrukcja, jednak trochę inne adnotacje.
  4. Czy mogę spodziewać się zmian w konfiguracji Mavena (SureFire)?

Jakie korzyści dodatkowo odczujemy po migracji na TestNG? Może nie warto ruszać czegoś, co po prostu działa i pozostać z JUnit?

0

Co do TestNG to szczerze polecam, jeśli chcesz to jeszcze łączyć z Selenium i Mockito to już w ogóle. Odnośnie pytać typowo technicznych to odsyłam http://testng.org/doc/ taj jest dosłownie wszystko opisane.

Co do opłacalności to wszystko zależy od tego co chcesz uzyskać. Moge zapewnić ci jedno, aby to było opłacalne to musicie mieć dobrego architekta Testów. Bo już dla małych aplikacji złożoność projektu testów może wydać się olbrzymia, a co dopiero dla np. Banków lub innych tego typu aplikacji. Architekt to podstawa inaczej możesz sobie odpuścić. JUnit przy TestNG wydaje mi się zabawką ale to moje subiektywne odczucie. No i jeszcze raz podkreślę jeśli chodzi o Selenium to szczerze polecam TestNG. Wszystko można łatwo dopieścić XML-ami i w ogóle.. dużo by się rozpisywać lepiej zajrzeć na strone i samemu to sprawdzić.

0
  1. tak dokładnie w ten sam sposób.
  2. nie trzeba nic robić chyba, że masz jakieś magie powpinane.
  3. Nie ponieważ TestNg potrafi współpracować z JUnitem i odpalać testy jako junitowe.
  4. tak, trzeba skonfigurować surefire i wskazać mu plik testng.xml. Dodatkowo w tym pliku należy wskazać pakiety z testami.

Jak już napisałem przy 3, TestNg potrafi odpalać testy JUnitowe "jak swoje", zatem nawet w przyapdku problemów można przeprowadzic migrację etapami.

0

Dziekuje wszystkim za odpowiedzi.

zciemnegojanusza napisał(a):

Architekt to podstawa inaczej możesz sobie odpuścić. JUnit przy TestNG wydaje mi się zabawką ale to moje subiektywne odczucie.

Do czego konkretnie potrzebuje Twoim zdaniem architekta (sprostowanie bedzie przydatne)? Raczej do zwyklych unit-testow programista daje rade. Jesli chodzi o proste integracyjne raczej tez spokojnie jestesmy to w stanie robic jako developerzy (mam na mysli testowanie integracyjne glownie EJB). Moje najwieksze watpliwosci sprawia Selenium, gdyz rzeczywiscie spodziewal bym sie tam oddzielnego projektu z duza liczba skomplikowanych testow.

Jednak podstawowe testy np. dzialanie potencjalnie podatnej na uszkodzenia nawigacji w obliczu zmian i tak pokusilbym sie, aby napisac.

Dalszym krokiem wydaje sie byc przygotowanie srodowiska CI czyli jakiegos Jenkinsa/Hudsona (do odpalania testow integracyjnych z konkretna baza na potrzeby testow). Unit testy i tak zawsze odpala Maven przy kazdym budowaniu, wiec CI nie jest do tego potrzebne.

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