Zpo-3-wyk-Slajd29
Z Studia Informatyczne
Założenia dla TestNG
Najważniejsze cechy TestNG to:
- Separacja implementacji testów od ich konfiguracji . Testy jednostkowe są wykonywane wielokrotnie, jednak nie zawsze konieczne jest wykonanie wszystkich przypadków testowych. TestNG pozwala specyfikować zakres testów niezależnie od kodu tych testów w postaci pliku XML. Dzięki temu można zdefiniować różne zestawy testów (za pomocą osobnych plików XML) do różnych zastosowań.
- Rezygnacja z mechanizmu dziedziczenia z wyróżnionej klasy testującej . Klasa testująca zapisana w TestNG nie musi być potomkiem konkretnej klasy należącej do biblioteki – może nią być dowolna zwykła klasa (tzw. POJO – Plain Old Java Object ).
- Koniec z konwencjami nazewniczymi . Podobnie, nazwy metod-przypadków testowych nie muszą odpowiadać jakimkolwiek konwencjom. Wystarczy, że są oznaczone anotacją @Test.
- Parametryzacja przypadków testowych . Przypadki testowe mogą przyjmować parametry typu String, których liczba i wartości są konfigurowane niezależnie od kodu testu.
- Trójpoziomowa ziarnistość inicjalizacji i finalizacji . Istnieje możliwość precyzyjnego ustalenia ziarnistości i zakresu inicjalizacji oraz finalizacji środowiska testowego: za pomocą adnotacji można oznaczyć metody wykonywane przed i po wszystkich przypadkach testowych w grupie (@ beforeSuite i @ afterSuite ), w klasie testującej (@ beforeTestClass i @ afterTestClass ) oraz – podobnie jak w JUnit’cie 3.x – pojedynczym przypadku testowym (@ beforeTestMethod i @ afterTestMethod )
- Wykorzystanie asercji wbudowanych w język w miejsce asercji programowych .
- Specyfikowanie zależności między grupami przypadków testowych i określanie kolejności ich wykonywania . Cecha ta, nieobecna w JUnit, pozwala m.in. na automatyczne pomijanie tych testów, których zależności wcześniej nie zostały spełnione (tzn. zgłosiły wyjątki). Pozwala także ręcznie oznaczać niektóre testy do pominięcia w aktualnym wykonaniu.
- Proste wskazywanie oczekiwanych wyjątków . Przypadek testowy sprawdzający pojawienie się oczekiwanego wyjątku zaimplementowany z wykorzystaniem JUnit 3.x musiał przechwycić ten wyjątek, a następnie go zignorować, natomiast brak wyjątku był sygnalizowany bezwarunkowym zgłoszeniem błędu. TestNG pozwala wskazać oczekiwany wyjątek za pomocą anotacji