Zarówno Testng, jak i Junit są platformami testującymi używanymi do testowania jednostkowego. TestNG jest podobny do JUnit. Dodano do niego kilka dodatkowych funkcji, które sprawiają, że TestNG jest potężniejszy niż JUnit.
Ten samouczek koncentruje się głównie na analizie funkcji JUnit i TestNG. Pomaga programistom zdecydować, która struktura powinna być używana do testów jednostkowych. Przeanalizujmy najpierw podobieństwa między TestNG i JUnit4.
TestNG to platforma testowa inspirowana JUnit i NUnit.
Oto tabela przedstawiająca funkcje obsługiwane przez JUnit i TestNG.
Porównanie funkcji JUnit4 i TestNG
Zarówno TestNG, jak i JUnit4 wyglądają podobnie, z wyjątkiem jednej lub dwóch funkcji. Dokonajmy porównania między nimi, aby szybko zdecydować, która technologia jest bardziej korzystna dla testów jednostkowych. Poniższa tabela przedstawia funkcje obsługiwane przez oba:
Adnotacje
Zarówno JUnit, jak i TestNG używają adnotacji i prawie wszystkie adnotacje wyglądają podobnie.
TestNG używa @BeforeMethod, @ AfterMethod podobnie jak @Before, @ After w JUnit4.
Zarówno TestNG, jak i Junit4 używają @Test (timeout = 1000) do przekroczenia limitu czasu. Sprawdź tabelę poniżej, aby uzyskać więcej informacji.
SN | Opis | TestNG | JUnit 4 |
---|---|---|---|
1 | Testuj adnotację | @Test | @Test |
2 | Wykonywane przed wywołaniem pierwszej metody testowej w bieżącej klasie | @Przed zajęciami | @Przed zajęciami |
3 | Wykonywane po wszystkich metodach testowych w bieżącej klasie | @Po zajęciach | @Po zajęciach |
4 | Wykonywane przed każdą metodą testową | @BeforeMethod | @Przed |
5 | Wykonywane po każdej metodzie testowej | @AfterMethod | @Po |
6 | adnotacja, aby zignorować test | @Test (włącz = fałsz) | @ignorować |
7 | adnotacja dotycząca wyjątku | @Test (spodziewaneExceptions = ArithmeticException.class) | @Test (oczekiwano = ArithmeticException.class) |
8 | koniec czasu | @Test (limit czasu = 1000) | @Test (limit czasu = 1000) |
9 | Wykonuje się przed wszystkimi testami w pakiecie | @BeforeSuite | n / a |
10 | Wykonuje się po wszystkich testach w pakiecie | @AfterSuite | n / a |
11 | Wykonywane przed uruchomieniem testu | @BeforeTest | n / a |
12 | Wykonywane po uruchomieniu testu | @AfterTest | n / a |
13 | Wykonywane przed wywołaniem pierwszej metody testowej należącej do którejkolwiek z tych grup | @BeforeGroups | n / a |
14 | uruchomić po ostatniej metodzie testowej należącej do którejkolwiek z wymienionych tutaj grup | @AfterGroups | n / a |
Test pakietu
Zestawy są używane do jednoczesnego wykonywania wielu testów. Pakiety można tworzyć przy użyciu zarówno TestNG, jak i JUnit4. Jednak pakiety są bardziej wydajne w TestNG, ponieważ używa bardzo różnych metod wykonywania testów. Zrozummy to, używając fragmentu kodu, jak podano poniżej:
Korzystanie z JUnit4
Poniższa klasa opisuje użycie pakietu podczas pracy z JUnit4:
pakiet guru99.junit;import org.junit.runner.RunWith;import org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})public class JunitTest {// Ta klasa pozostaje pusta, jest używana tylko jako uchwyt na powyższe adnotacje}
Korzystanie z TestNG
TestNG używa XML do pakowania wszystkich testów w jednym miejscu. Poniżej xml opisuje użycie pakietu podczas pracy z TestNG:
Ignoruj test
Używając obu, możemy pominąć test. Zobaczmy to na przykładzie kodu, jak podano poniżej:
Korzystanie z JUnit4
Poniższy fragment kodu opisuje użycie adnotacji @ignore podczas pracy z JUnit4:
@Ignorowaćpublic void method1 (){System.out.println ("Używając @Ignore, to wykonanie jest ignorowane");}
Korzystanie z TestNG
Poniższy fragment kodu opisuje użycie adnotacji @Test (enabled = false) podczas pracy z TestNG:
@Test (włączony = fałsz)public void TestWithException (){System.out.println ("Metodę należy zignorować, ponieważ nie jest jeszcze gotowa");}
Test wyjątków
Testowanie wyjątków jest dostępne zarówno w TestNG, jak i JUnit4. Służy do sprawdzenia, który wyjątek jest wyrzucany z testu?
Korzystanie z JUnit4
Poniższy fragment kodu opisuje użycie testu wyjątków podczas pracy z JUnit4:
@Test (oczekiwano = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}
Korzystanie z TestNG
Poniższy fragment kodu opisuje użycie testu wyjątków podczas pracy z TestNG:
@Test (spodziewaneExceptions = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}
Koniec czasu
Ta funkcja jest zaimplementowana zarówno w TestNg, jak i JUnit4.Timeout służy do przerwania testu, który trwa dłużej niż określony czas (w milisekundach).
Korzystanie z JUnit4
Poniższy fragment kodu opisuje użycie testu limitu czasu podczas pracy z JUnit4:
@Test (limit czasu = 1000)public void method1 (){while (prawda);}
Korzystanie z TestNG
Poniższy fragment kodu opisuje użycie testu limitu czasu podczas pracy z TestNG:
@Test (timeOut = 1000)public void method1 (){while (prawda);}
Test sparametryzowany
JUnit zapewnia łatwiejsze i bardziej czytelne podejście do testowania, znane jako test sparametryzowany. Zarówno TestNG, jak i JUnit obsługują sparametryzowane testy, ale różnią się sposobem definiowania wartości parametru. Zobaczmy to jeden po drugim.
Korzystanie z JUnit4
Adnotacje „@RunWith” i „@Parameter” służą do podania wartości parametru dla testu jednostkowego. Adnotacja @Parameters musi zwrócić List []. Ten parametr zostanie przekazany do konstruktora klasy jako argument.
@RunWith (wartość = Parameterized.class)public class JunitTest {numer privateint;publiczny JunitTest6 (numer int){this.number = number;}@Parameterspublic static Collection
Korzystanie z TestNG
W TestNG, plik XML lub „@DataProvider” jest używany jako parametr do testowania.
Tutaj adnotacja @Parameters zadeklarowana w metodzie wymaga parametru do testowania. Dane użyte jako parametr zostaną dostarczone w plikach konfiguracyjnych XML TestNG. W ten sposób możemy ponownie wykorzystać pojedynczy przypadek testowy z różnymi zestawami danych i uzyskać różne wyniki.
public class Test1 {@Test@Parameters (wartość = "liczba")public void parameterTest (numer int){System.out.println ("Sparametryzowana liczba to: + liczba);}}
Zobacz poniżej plik xml do użycia dla powyższej klasy:
Podsumowanie :
Widzieliśmy szczegółowo porównanie JUnit4 i TestNG. Widzieliśmy również, że oba są podobne, z wyjątkiem testu sparametryzowanego i testu zależności. Krótko mówiąc, na podstawie elastyczności i wymagań możemy wybrać dowolny z nich do testów jednostkowych.
- Kolejny