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ż:
- Większe możliwości na przyszłość (Selenium, grupowanie testów niejednostkowych).
- W tej chwili mamy kilkaset testów (wraz z utrzymaniem i nowymi funkcjonalnościami ich liczba będzie rosła).
- W przyszłości chcielibyśmy wypróbować testy integracyjne i Arquilliana.
Moje obawy:
- 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).
- Rozumiem, że w przypadku Mockito raczej nie trzeba nic migrować.
- 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.
- 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?