list junit annotations
Ten samouczek wyjaśnia wszystko na temat adnotacji JUnit wraz z porównaniem adnotacji w JUnit 4 i JUnit 5:
Dowiedzieliśmy się o różnych sposobach wykonywania przypadków testowych JUnit i widzieliśmy, jak tworzyć i wykonywać zestaw testów w naszym poprzednim samouczku.
W tym samouczku poznamy ważny aspekt JUnit, który nazywa się Adnotacje. Począwszy od JUnit 4, adnotacje są na miejscu i sprawiają, że JUnit jest bardzo prosty, korzystniejszy i znacznie bardziej przyjazny dla użytkownika.
Adnotacje to interfejs API języka Java, który umożliwia maszynę JVM rozpoznawanie typu metody zdefiniowanej w klasie testowej. Istnieją „adnotacje zwrotne dotyczące cyklu życia”, które są często używane.
=> Odwiedź tutaj, aby nauczyć się JUnit od podstaw.
Czego się nauczysz:
Adnotacje JUnit - JUnit 4 vs JUnit 5
Wykonanie testu przechodzi przez różne etapy cyklu życia, jak podano poniżej:
- Przed rozpoczęciem testu należy wykonać pewne czynności związane z rozpoczęciem zajęć.
- Pewne inne czynności, które należy wykonać przed rozpoczęciem wykonywania testu.
- Niektóre czynności, które należy wykonać po wykonaniu testu i
- Pewne czynności na koniec wykonywania wszystkich testów w klasie.
Aby upewnić się, że czynności te są wykonywane na każdym etapie cyklu życia oprogramowania Java, muszą istnieć określone metody lub funkcje zdefiniowane przez użytkownika, określane jako „ metody wywołania zwrotnego w cyklu życia .
Zachowanie tych metody wywołania zwrotnego w cyklu życia jest określana przez wbudowaną „ adnotacje zwrotne dotyczące cyklu życia ' używany w JUnit.
Przykład: Spróbujmy jeszcze bardziej uprościć sprawę, odnosząc te metody wywołania zwrotnego i adnotacje cyklu życia do przykładu testowanie automatu z kawą.
- Metoda machineReady (), który sprawdza, czy woda, mleko i ziarna kawy są dostępne przed włączeniem urządzenia.
- Inna metoda startMachine (), który włącza urządzenie, umieszcza w urządzeniu nowy, nowy kubek papierowy.
- Przypadek testowy, który sprawdza „ Gorąca woda ()' opcja.
- Kolejny przypadek testowy, który sprawdza „ Cappuccino ()' opcja.
- Kolejny przypadek testowy, który sprawdza „ ExpressoCoffee ()' opcja.
- Inna metoda ” throwCup () ”, Który wyrzuca zużyte kubki do kosza.
- Metoda na poziomie klasy ” throwTrashandSwitchOff () ”Wyrzuca przelewający się brudny płyn z tacy do misy i wyłącza maszynę.
Tak więc w powyższym przykładzie cykl życia testu wygląda następująco:
- startMachine () uruchomi się przed każdym przypadkiem testowym - Gorąca woda (), Cappuccino () i ExpressoCoffee () działa.
- Każdy z tych przypadków testowych jest również zgodny z metodą throwCup ().
- Metody machineReady () i throwTrashandSwitchOff () to metody na poziomie klasy, które działają tylko raz dla klasy. Metoda machineReady () jest uruchamiane raz, podczas gdy klasa inicjuje wykonanie. Metoda throwTrashandSwitchOff () jest uruchamiane raz po zakończeniu wykonywania wszystkich przypadków testowych.
Pojawia się pytanie, że są to tylko metody Java, a zatem:
najlepsza jakość konwertera youtube na mp3
- Jak będziemy nalegać na uruchomienie JVM machineReady () tylko raz na poziomie klasy i throwTrashandSwitchOff () na końcu wykonania klasy?
- Jak o tym przekonamy JVM startMachine () i throwCup () musi być uruchomione odpowiednio przed uruchomieniem każdego testu i po jego zakończeniu?
- Jak możemy sprawić, by JVM zidentyfikowało te metody Gorąca woda (), Cappuccino () i ExpressoCoffee () czy mają być uruchamiane przypadki testowe?
Odpowiedź: Jedyną odpowiedzią na powyższe pytania jest to, że adnotacje wywołania zwrotnego cyklu życia wykonują całą wymaganą magię.
(Na razie załóżmy, że tworzymy tę klasę w JUnit 4)
Adnotacje dotyczące cyklu życia - @BeforeClass, @AfterClass, @Before, @After, i @Test to prawdziwe odpowiedzi na powyższe trzy pytania. Jesteśmy prawie pewni, że po przeczytaniu poniższych wskazówek, zrozumiesz, jak wygląda cykl życia adnotacji zwrotnych i jego przepływ pracy.
- Opisz metodę machineReady () z @Przed zajęciami a JVM sprawi, że zostanie uruchomiony raz na początku zajęć.
- Opisz metodę wyrzucać śmieci () z @Po zajęciach a JVM sprawi, że zostanie uruchomiony raz na koniec zajęć.
- Opisz metodę startMachine () z @Przed a JVM uruchomi go przed każdym uruchomieniem testu.
- Opisz metodę throwCup () z @Po a JVM uruchomi go po wykonaniu każdego przypadku testowego.
- Opisz każdą z tych metod Gorąca woda (), Cappuccino () i ExpressoCoffee () z @Test a JVM wie, że są to podstawowe przypadki testowe dla klasy JUnit do wykonania.
Rzućmy okiem na plik Adnotacje wywołania zwrotnego cyklu życia JUnit dla JUnit 4 i JUnit 5
JUNIT 4 ANNOTATION | JUNIT 5 ANNOTATION | |
---|---|---|
@RepeatedTest | 1.JUnit 5 obsługuje wielokrotne wykonywanie metody testowej określoną liczbę razy przy użyciu adnotacji @RepeatedTest | |
@Przed | @BeforeEach | |
@Po | @Po każdym | |
@Przed zajęciami | @Przed wszystkim | |
@Po zajęciach | @W sumie | |
@Test | @Test |
Sekwencyjny przepływ adnotacji cyklu życia
Poniżej przedstawiono sekwencyjny przepływ pracy adnotacji cyklu życia dla JUnit 4:
- Metoda z adnotacją @BeforeClass jest wykonywana raz na początku klasy.
- Metoda z adnotacją @Before jest wykonywana przed rozpoczęciem Testcase 1.
- Metoda Testcase1 z adnotacją @Test jest przypadkiem testowym w klasie.
- Metoda z adnotacją @After jest uruchamiana po zakończeniu wykonywania przez Testcase 1.
- Metoda z adnotacją @Before jest wykonywana przed rozpoczęciem Testcase 2.
- Metoda Testcase2 z adnotacją @Test jest przypadkiem testowym w klasie.
- Metoda z adnotacją @After jest uruchamiana po zakończeniu wykonywania przez Testcase 2.
- Metoda z adnotacją @AfterClass jest wykonywana raz na końcu klasy po wykonaniu obu przypadków testowych 1 i 2.
Sekwencyjny przepływ pracy adnotacji cyklu życia dla JUnit 5 jest następujący:
- Metoda z adnotacją @BeforeAll jest wykonywana raz na początku klasy.
- Metoda z adnotacją @BeforeEach jest wykonywana przed rozpoczęciem Testcase 1.
- Metoda Testcase1 z adnotacją @Test jest przypadkiem testowym w klasie.
- Metoda z adnotacją @AfterEach jest uruchamiana po zakończeniu wykonywania przez Testcase 1.
- Metoda z adnotacją @BeforeEach jest wykonywana przed rozpoczęciem Testcase 2.
- Metoda Testcase2 z adnotacją @Test jest przypadkiem testowym w klasie.
- Metoda z adnotacją @AfterEach jest uruchamiana po zakończeniu wykonywania przez Testcase 2.
- Metoda z adnotacją @AfterAll jest wykonywana raz na końcu klasy po wykonaniu obu przypadków testowych 1 i 2.
Opracowanie dotyczące każdej adnotacji
W tej sekcji przyjrzyjmy się dokładniej i szczegółowo zrozummy, co robi każda z adnotacji zwrotnych w każdym cyklu życia:
@Before (JUnit 4) / @ BeforeEach (JUnit 5):
- Metoda z adnotacjami jest wykonywana przed wykonaniem każdej metody testowej w klasie testowej.
- Ta adnotacja może być użyta, gdy chcesz ustawić zasoby lub dane testowe tuż przed rozpoczęciem każdego testu.
- Na przykład, jeśli w klasie testowej JUnit jest 5 przypadków testowych, wówczas metoda z adnotacją @ Before / @ BeforeEach jest wykonywana 5 razy przed każdym wykonaniem przypadku testowego.
@After (JUnit 4) / @ AfterEach (JUnit 5):
- Metoda z adnotacjami jest wykonywana po wykonaniu każdej metody testowej w klasie testowej.
- Ta adnotacja może być używana, gdy chcesz zwolnić używane zasoby lub dane testowe po uruchomieniu każdego przypadku testowego.
- Na przykład, jeśli w klasie testowej JUnit jest 5 przypadków testowych, metoda z adnotacją @ After / @ AfterEach jest wykonywana 5 razy po wykonaniu przypadków testowych.
@BeforeClass (JUnit 4) / @ BeforeAll (JUnit 5):
- Metoda z adnotacjami jest wykonywana przed wykonaniem wszystkich metod testowych w klasie testowej.
- Ta adnotacja może być używana, gdy chcesz skonfigurować zasoby lub przetestować dane na poziomie klasy.
- Ponieważ ta metoda jest opatrzona adnotacją @ BeforeClass / @ BeforeAll jest wykonywana tylko raz dla klasy testowej, a kopia metody jest udostępniana w klasie, a metoda musi być określona statyczny.
- Na przykład, jeśli w klasie testowej JUnit znajduje się 5 przypadków testowych, metoda z adnotacją @ BeforeClass / @ BeforeAll jest wykonywana raz na klasę testową przed zainicjowaniem jakiejkolwiek sprawy testowej.
@AfterClass (JUnit 4) / @ AfterAll (JUnit 5):
- Metoda z adnotacjami jest wykonywana po wykonaniu wszystkich metod testowych w klasie testowej.
- Ta adnotacja może być użyta, gdy chcesz zwolnić używane zasoby lub dane testowe na poziomie klasy.
- Ponieważ ta metoda jest oznaczona adnotacją @ AfterClass / @ AfterAll jest wykonywana tylko raz dla klasy testowej, a kopia metody jest udostępniana w całej klasie, należy podać metodę statyczny.
- Na przykład, jeśli w klasie testowej JUnit jest 5 przypadków testowych, metoda z adnotacją @ AfterClass / @ AfterAll jest wykonywana raz na klasę testową po zakończeniu wykonywania wszystkich przypadków testowych.
@Test (JUnit 4 i JUnit 5):
- Adnotacja @Test jest wspólna dla JUnit 4 oraz JUnit 5. Metody z adnotacjami reprezentują przypadki testowe w klasie.
- Może istnieć wiele metod, z których każda ma adnotację @Test w klasie JUnit. Oznacza to, że klasa może mieć wiele przypadków testowych.
- Istnieją różne atrybuty lub parametry do przetestowania, które można przekazać. Możesz dodać wymuszony limit czasu dla przypadku testowego lub dodać wyjątek. Zostanie to szczegółowo omówione w osobnym samouczku.
- Metoda z adnotacjami nie może być prywatna ani statyczna i nie może zwracać żadnej wartości.
- Metoda @Test musi być zadeklarowana jako publiczna w JUnit 4, podczas gdy Junit 5 zezwala na przypadek testowy zdefiniowany bez modyfikatora dostępu „public”, ponieważ domyślnie traktuje „brak modyfikatora dostępu” jako „publiczny”.
Podstawowy przykład testu JUNIT
Podstawowe JUNIT 4 przykład dla adnotacji @BeforeClass, @Before, @Test, @After i @AfterClass został pokazany w kodzie wraz z objaśnieniem w naszym wcześniejszym samouczku „Test Fixtures”.
Spójrzmy na podstawy JUnit 5 Program, aby zademonstrować działanie adnotacji zwrotnych cyklu życia @BeforeAll, @BeforeEach, @Test, @AfterEach i @AfterAll.
Kod dla JUnit5Program.java:
public class JUnit5Program { @BeforeAll public static void preClass() { System.out.println('@BeforeAll – the annotated method runs once before all other methods execute'); } @BeforeEach public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('@BeforeEach – the annotated method executes before each test '); } @Test public void test_JUnit1() { System.out.println('@Test – this is test case 1'); } @Test public void test_JUnit2() { System.out.println('@Test – this is test case 2'); } @Test public void test_JUnit3() { System.out.println('@Test – this is test case 3'); } @AfterEach public void tearDown() { System.out.println('@AfterEach – the annotated method executes after each test executes'); System.out.println('_______________________________________________________
'); } @AfterAll public static void postClass() { System.out.println('@AfterAll – the annotated method runs once after all other methods execute'); } }
Po wykonaniu pliku klasy poniższy wynik jest wyświetlany w oknie konsoli.
Dodatkowe adnotacje - JUnit 4 vs JUnit 5
Istnieje wiele dodatkowych adnotacji, które są używane do określonych celów. W skrócie zobaczymy listę adnotacji dla JUnit 4 i JUnit 5 oraz ich cel.
W naszych nadchodzących samouczkach będzie szczegółowy samouczek dotyczący każdej z tych adnotacji.
JUNIT 4 ANNOTATION | JUNIT 5 ANNOTATION | Opis w skrócie |
---|---|---|
@FixMethodOrder | @TestMethodOrder & @Order | 1. Te adnotacje pozwalają użytkownikowi wybrać kolejność wykonywania metod w klasie testowej |
@Rule & @ClassRule | @ExtendWith | 1. @Rule - adnotacja jest rozszerzana z klasy TestRule, która pomaga zastosować określone reguły do przypadków testowych. 2. Na przykład: tworzenie folderu tymczasowego przed wykonaniem przypadku testowego i usuwanie folderu po wykonaniu można ustawić za pomocą reguły. 3. @Rule jest dostępna tylko w JUnit 4, która może być używana w JUnit 5 Vintage, jednak @ExtendWith zapewnia bliższą funkcję dla JUnit 5 4. Podobnie, globalny limit czasu można ustawić za pomocą @Rule. |
NA | @TestFactory | 1. Ta adnotacja jest obsługiwana tylko przez JUnit 5 i pomaga w tworzeniu testów dynamicznych lub uruchomieniowych. 2. Zwraca strumień danych jako kolekcję i nie może używać adnotacji zwrotnych dotyczących cyklu życia |
NA | @ Zagnieżdżone | 1. Ta adnotacja jest obsługiwana tylko przez JUnit Jupiter Pomaga nam tworzyć zagnieżdżone przypadki testowe. 3. Na przykład klasa 1 z przypadkiem testowym 1 może mieć @Nested Class 2 z przypadkiem testowym 2. Sprawia to, że przypadek 2 jest zagnieżdżonym przypadkiem testowym 1. W związku z tym wykonuje się przypadek 1, a następnie przypadek 2. 4.Jeśli adnotacja @Nested nie jest używana, klasa zagnieżdżona nie zostanie wykonana. |
@Kategoria | @Etykietka | 1. Ta adnotacja pomaga w oznaczaniu i filtrowaniu testów 2. Możesz dołączyć testy do wykonania lub wykluczyć je, filtrując na podstawie kategorii, do których należą. |
@RunWith (Parameterized.class) @ Sparametryzowane.Parametry | @ParameterizedTest i @ValueSource | 1. Adnotacja ta służy do wielokrotnego uruchamiania metody z testowymi odchyleniami danych. 2.JUnit 4 obsługuje @RunWith i @Parameters, podczas gdy JUnit 5 Jupiter obsługuje @ParameterizedTest z @ValueSource |
@Wyświetlana nazwa | 1. Metodzie testowej lub klasie można nadać nazwę zdefiniowaną przez użytkownika w celu wyświetlenia. | |
@TestInstance (LifeCycle.PER_CLASS) i @TestInstance (LifeCycle.PER_METHOD) | 1. JUnit 5 obsługuje konfigurację cyklu życia testów. 2. Zarówno JUnit 4, jak i 5 wykonują domyślne wywołanie zwrotne dla cyklu życia metody, podczas gdy można również wykonać konfigurację dla poszczególnych klas. |
Referencje => JUnit 4 , JUnit 5
Wniosek
- Dowiedzieliśmy się o adnotacjach wywołania zwrotnego w cyklu życia i sekwencyjnym przepływie pracy, w którym metody testowe są wykonywane na podstawie ich adnotacji.
- Poznaliśmy adnotacje używane w JUnit 4 i adnotacje w JUnit 5.
- Dowiedzieliśmy się również o dodatkowych adnotacjach obsługiwanych przez JUnit 4 i tych, które obsługują tylko JUnit 5.
=> Obejrzyj serię szkoleń Simple JUnit tutaj.
rekomendowane lektury
- Co to jest urządzenie testowe JUnit: samouczek z przykładami JUnit 4
- Testy JUnit: Jak pisać przypadki testowe JUnit z przykładami
- Samouczek JUnit dla początkujących - co to jest testowanie JUnit
- Pobierz, zainstaluj i skonfiguruj JUnit w Eclipse
- Wiele sposobów wykonywania testów JUnit
- Wprowadzenie do JUnit Framework i jego wykorzystanie w skrypcie Selenium - Samouczek Selenium # 11
- Ukryta lista tablic i innych kolekcji w Javie
- Metody listy Java - Sortuj listę, Zawiera, Dodaj listę, Usuń listę