Co to jest sparametryzowany test w Junit?
Test sparametryzowany polega na wielokrotnym wykonywaniu tego samego testu przy użyciu różnych wartości. Pomaga programistom zaoszczędzić czas na wykonywaniu tego samego testu, który różni się tylko 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, aby zsumować różne liczby. Kod może wyglądać następująco -
Powyższe podejście prowadzi do dużej nadmiarowości.
Potrzebujemy prostego podejścia i. Korzystając z testu parametryzowanego, możesz po prostu dodać metodę do wprowadzenia 10 danych wejściowych, a test będzie wykonywany automatycznie 10 razy.
Kroki, aby utworzyć sparametryzowany test JUnit
Poniższy kod przedstawia przykład sparametryzowanego testu. 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 adnotacje do klasy testowej za pomocą @runWith (Parameterized.class).
- Linia kodu 13: Zadeklarowanie zmiennej „firstNumber” jako prywatnej i wpisanie jako int.
- Linia kodu 14: Zadeklarowanie zmiennej „secondNumber” jako prywatnej i wpisanie jako int.
- Linia kodu 15: Zadeklarowanie zmiennej „spodziewany wynik” jako prywatnej i wpisanie jako int.
- Linia kodu 16: Deklaracja zmiennej „airthematic” jako prywatna i wpisanie jako Airthematic.
@RunWith (class_name.class): @RunWith adnotacja jest używany do określenia jego nazwę klasy biegaczem. Jeśli nie określimy żadnego typu jako parametru, środowisko wykonawcze domyślnie wybierze BlockJunit4ClassRunner .
Ta klasa jest odpowiedzialna za testy do uruchomienia z nową instancją testową. Odpowiada za wywoływanie metod cyklu życia JUnit, takich jak konfiguracja (zasoby skojarzone) i rozerwanie (zasoby zwalniania).
Aby sparametryzować, musisz dodać adnotację za pomocą @RunWith i przekazać wymaganą klasę .class 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 dwuwymiarowej tablicy (zawierającej parametry wejściowe do dodania). Za pomocą metody asList konwertujemy dane na typ List. Ponieważ zwracanym typem danych wejściowych metody jest kolekcja.
Linia kodu 30: Używanie adnotacji @Parameters do tworzenia zestawu danych wejściowych do uruchomienia naszego testu.
Metoda statyczna identyfikowana przez adnotację @Parameters zwraca Collection, w której każdy wpis w Collection będzie danymi wejściowymi dla jednej iteracji testu.
Rozważmy element
{1, 2, 3}
Tutaj
firstNumber = 1
secondNumber = 2
spodziewanyResult = 3
Tutaj każdy element tablicy zostanie przekazany do konstruktora, po jednym na raz, ponieważ klasa jest tworzona wiele razy.
Krok 5) Pełny kod
Objaśnienie kodu:
- Linia kodu 25: Używanie adnotacji @Before do konfiguracji zasobów (tutaj Airthematic.class). Adnotacja @Before jest używana tutaj do uruchamiania przed każdym przypadkiem testowym. Zawiera warunek wstępny testu.
- Linia kodu 36: Używanie adnotacji @Test do tworzenia naszego testu.
- Linia kodu 39: Tworzenie instrukcji assert w celu sprawdzenia, czy nasza suma jest równoważna temu, czego oczekiwaliśmy.
Krok 6) Utwórz klasę uruchamiającą testy, aby uruchomić sparametryzowany test:
Objaśnienie kodu:
- Linia kodu 8: Deklaracja głównej metody testu klasy, która uruchomi nasz test JUnit.
- Linia kodu 9: Wykonywanie przypadków testowych przy użyciu JunitCore.runclasses, weźmie nazwę klasy testowej jako parametr (w naszym przykładzie używamy Airthematic.class).
- Linia kodu 11: Przetwarzanie wyniku za pomocą pętli for i drukowanie nieudanego wyniku.
- Linia kodu 13: Drukowanie pomyślnego wyniku.
Wynik:
Oto dane wyjściowe, które pokazują pomyślny test bez śladu awarii, jak podano poniżej:
Zobacz wynik na konsoli, który pokazuje dodanie dwóch liczb: -
Podsumowanie :
Test sparametryzowany umożliwia programiście wykonywanie w kółko tego samego testu przy użyciu różnych wartości.
Ważne uwagi do wykorzystania podczas parametryzacji
- @Biegnij z
- @Parameters