Skip to content

Framework TestNG

Damian Muszyński edited this page Apr 19, 2021 · 1 revision

Framework TestNG

TestNG to biblioteka do automatyzacji testów dla Javy, stworzona przez Cedrica Beusta. Liczne ograniczenia JUnit i NUnit zainspirowały autora do stworzenia narzędzia które je przezwycięży.

Jego celem jest objęcie wszystkich kategorii automatyzacji testów - testowanie jednostkowe, testy funkcjonalne, testy end-to-end, integracyjne. Eliminując większość ograniczeń szkieletu - JUnit, ta struktura automatyzacji testów w Java daje możliwość pisania bardziej elastycznych i zaawansowanych testów. Chociaż, aby móc korzystać z tej struktury automatyzacji, jak w przypadku JUnit potrzebna jest przynajmniej podstawowa znajomość języka programowania Java.

Biblioteka pojawiła się poraz pierwszy w czasie gdy wszyscy korzystali z JUnit 3. Biblioteka TestNG oferowała nowe funkcje, które nie istniały wówczas w innych projektach, koncentrując się przy tym na rozbudowie możliwości testowych. Niektóre z funkcji, takie jak np. użycie adnotacji było czymś zupełnie nowym, ponieważ w JUnit zostały dodane dopiero w wersji 4, czyli po opublikowaniu TestNG.

Cechy frameworka testowego TestNG:

  • Obsługuje adnotacje
  • Umożliwia grupowanie testów
  • Wprowadza metody zapewniające dane dla testów
  • Umożliwia definiowanie zależności pomiędzy testami
  • Pozwala na szybkie uruchamianie tylko tych testów,które poprzednio zakończyły się błędem

Poniżej przedstawiono podstawowe adnotacje w TestNG:

Adnotacja Opis
@Test Oznacza klasę lub metodę jako część testu.
@BeforeSuite Metoda zostanie uruchomiona, zanim wszystkie testy w tym pakiecie zostaną uruchomione.
@AfterSuite Metoda zostanie uruchomiona po uruchomieniu wszystkich testów w tym pakiecie.
@BeforeTest Metoda zostanie uruchomiona, zanim zostanie uruchomiona jakakolwiek metoda testowa należąca do klas wewnątrz znacznika .
@AfterTest Metoda zostanie uruchomiona po uruchomieniu wszystkich metod testowych należących do klas wewnątrz znacznika .
@BeforeGroups Lista grup, dla których ta metoda konfiguracji będzie wcześniej uruchamiana. Ta metoda jest uruchamiana na krótko przed
@AfterGroups Lista grup, dla których ta metoda konfiguracji będzie wcześniej uruchamiana. Ta metoda jest uruchamiana na krótko po wywołaniu ostatniej metody testowej należącej do którejkolwiek z tych grup.
@BeforeClass Metoda zostanie uruchomiona przed wywołaniem pierwszej metody testowej w bieżącej klasie.
@AfterClass Metoda zostanie uruchomiona po uruchomieniu wszystkich metod testowych w bieżącej klasie.
@BeforeMethod Metoda zostanie uruchomiona przed uruchomieniem każdej metody testowej w bieżącej klasie.
@AfterMethod Metoda zostanie uruchomiona po każdej metodzie testu.

Przykładowa reprezentacja pogrupowanych testów może wyglądać następująco:

public class RegularExpressionGroupTest {
 
    @Test(groups = { "include-test-one" })
    public void testMethodOne() {
        System.out.println("Test method one");
    }
 
    @Test(groups = { "include-test-two" })
    public void testMethodTwo() {
        System.out.println("Test method two");
    }
 
    @Test(groups = { "test-one-exclude" })
    public void testMethodThree() {
        System.out.println("Test method three");
    }
 
    @Test(groups = { "test-two-exclude" })
    public void testMethodFour() {
        System.out.println("Test method Four");
    }
}