JUnit Test sparametryzowany z przykładem przy użyciu @Parameters
Czym jest test parametryczny w Junit?
Test parametryczny polega na powtarzaniu tego samego testu przy użyciu różnych wartości. Pomaga programiście zaoszczędzić czas na wykonywaniu tego samego testu, który różni się jedynie danymi wejściowymi i oczekiwanymi wynikami.
Korzystając z testu sparametryzowanego, można skonfigurować metodę testową, która pobiera dane z jakiegoś źródła danych.
Rozważ prosty test sumowania różnych liczb. Kod może wyglądać tak –
Powyższe podejście prowadzi do dużej redundancji.
Potrzebujemy prostego podejścia i. Używając testu sparametryzowanego, możesz po prostu dodać metodę wprowadzania 10 danych wejściowych, a test zostanie uruchomiony automatycznie 10 razy.
Kroki tworzenia pliku sparametryzowanego JUnit test
Poniższy kod pokazuje przykład testu parametrycznego. Testuje metodę sum() klasy Arithmetic:
Krok 1) Utwórz klasę. W tym przykładzie wprowadzimy dwie liczby za pomocą metody sum (int,int), która zwróci sumę podanych liczb.
Krok 2) Utwórz sparametryzowaną klasę testową
Objaśnienie kodu
- Linia kodu 11: Dodaj adnotację do swojej klasy testowej, używając @runWith(Parameterized.class).
- Linia kodu 13: Deklarowanie zmiennej „firstNumber” jako prywatnej i wpisywanie jako int.
- Linia kodu 14: Deklarowanie zmiennej „drugiNumber” jako prywatnej i wpisywanie jako int.
- Linia kodu 15: Deklarowanie zmiennej „expectedResult” jako prywatnej i wpisywanie jako int.
- Linia kodu 16: Deklarowanie zmiennej „airthematic” jako prywatnej i typ jako Airthematic.
@Biegnij z(nazwa_klasy.klasa): @Biegnij z adnotacja służy do określenia nazwy klasy modułu uruchamiającego. Jeśli nie określimy żadnego typu jako parametru, środowisko wykonawcze dokona wyboru BlokujJunit4ClassRunner domyślnie.
Ta klasa jest odpowiedzialna za uruchamianie testów z nową instancją testową. Odpowiada za wywoływanie JUnit metody cyklu życia, takie jak konfiguracja (powiązanie zasobów) i rozbiórka (zwolnienie zasobów).
Aby sparametryzować, musisz dodać adnotację za pomocą @RunWith i przekazać wymaganą klasę do przetestowania
Krok 3) Utwórz konstruktor przechowujący dane testowe. Przechowuje 3 zmienne
Krok 4) Utwórz metodę statyczną, która generuje i zwraca dane testowe.
Linia kodu 32,33: Tworzenie tablicy dwuwymiarowej (podanie parametrów wejściowych do dodania). Za pomocą metody asList konwertujemy dane na typ List. Ponieważ zwracanym typem danych wejściowych metody jest kolekcja.
Linia kodu 30: Korzystanie z @Parametry adnotacja tworząca zestaw danych wejściowych do uruchomienia naszego testu.
Metoda statyczna identyfikowana przez adnotację @Parameters zwraca kolekcję, w której każdy wpis w kolekcji będzie danymi wejściowymi dla jednej iteracji testu.
Rozważ element
1,2,3 {}
Tutaj
pierwszy numer = 1
drugi numer = 2
oczekiwany wynik=3
W tym przypadku każdy element tablicy będzie przekazywany do konstruktora pojedynczo, podczas wielokrotnego tworzenia instancji klasy.
Krok 5) Kompletny kod
Wyjaśnienie kodu:
- Linia kodu 25: Użycie adnotacji @Before do skonfigurowania zasobów (tutaj Airthematic.class). Adnotacja @Before jest tutaj używana do uruchamiania przed każdym przypadkiem testowym. Zawiera warunek wstępny testu.
- Linia kodu 36: Użycie adnotacji @Test do stworzenia naszego testu.
- Linia kodu 39: Tworzenie instrukcji asert w celu sprawdzenia, czy nasza suma jest równa oczekiwanej.
Krok 6) Utwórz klasę uruchamiającą test, aby uruchomić test sparametryzowany:
Wyjaśnienie kodu:
- Linia kodu 8: Deklarowanie głównej metody testu klasy, która będzie uruchamiana przez naszą klasę JUnit test.
- Linia kodu 9: Podczas wykonywania przypadków testowych za pomocą JunitCore.runclasses nazwa klasy testowej będzie przyjmowana jako parametr (w naszym przykładzie używamy Airthematic.class).
- Linia kodu 11: Przetwarzanie wyniku za pomocą pętli for i wydrukowanie wyniku nie powiodło się.
- Linia kodu 13: Drukowanie pomyślnego wyniku.
Wyjście:
Oto dane wyjściowe pokazujące pomyślny test bez śladów awarii, jak podano poniżej:
Zobacz wynik na konsoli, który pokazuje dodawanie dwóch liczb:
Podsumowanie
Test sparametryzowany umożliwia programiście wykonywanie tego samego testu w kółko przy użyciu różnych wartości.
Ważne adnotacje, które należy stosować podczas parametryzacji
- @Biegnij z
- @Parametry