JUnit to najpopularniejszy framework do testów jednostkowych w Javie. Jest to wyraźnie zalecane w przypadku testów jednostkowych. JUnit nie wymaga serwera do testowania aplikacji webowej, co przyspiesza proces testowania.
Framework JUnit umożliwia również szybkie i łatwe generowanie przypadków testowych i danych testowych. Org.Junit pakiet składają się z wielu interfejsów i klas dla JUnit testowania takich jak Test, dochodzić, po, przed, etc.
Co to jest osprzęt testowy
Zanim zrozumiemy, czym jest urządzenie testowe, przeanalizujmy poniższy kod
Ten kod jest przeznaczony do wykonywania dwóch przypadków testowych na prostym pliku.
public class OutputFileTest {prywatne wyjście pliku;output = new File (…);output.delete ();public void testFile1 () {// Kod do weryfikacji przypadku testowego 1}output.delete ();output = new File (…);public void testFile2 () {// Kod do weryfikacji przypadku testowego 2}output.delete ();}
Kilka problemów tutaj
- Kod nie jest czytelny
- Kod nie jest łatwy w utrzymaniu.
- Gdy zestaw testów jest złożony, kod może zawierać problemy logiczne.
Porównaj ten sam kod za pomocą JUnit
publiczna klasa OutputFileTest{prywatne wyjście pliku;@Before public void createOutputFile (){output = new File (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// kod celu przypadku testowego}@Test public void testFile2 (){// kod celu przypadku testowego}}
Kod jest dużo bardziej czytelny i łatwiejszy w utrzymaniu. Powyższa struktura kodu to urządzenie testowe.
Urządzenie testowe to kontekst, w którym jest uruchamiany przypadek testowy. Zazwyczaj osprzęt testowy obejmuje:
- Obiekty lub zasoby dostępne dla każdego przypadku testowego.
- Wymagane działania, które udostępniają te obiekty / zasoby.
- Te działania są
- alokacja ( konfiguracja )
- anulowanie alokacji ( rozbiórka ).
Konfiguracja i rozebranie
- Zwykle przed każdym przypadkiem testowym należy wykonać kilka zadań powtarzalnych. Przykład: utwórz połączenie z bazą danych.
- Podobnie pod koniec każdego przypadku testowego mogą pojawić się powtarzające się zadania. Przykład: aby wyczyścić po zakończeniu wykonywania testu.
- JUnit zapewnia adnotacje, które pomagają w konfiguracji i dezaktywacji. Zapewnia zwolnienie zasobów, a system testowy jest w stanie gotowości do następnego przypadku testowego.
Te adnotacje są omówione poniżej:
Ustawiać
Adnotacja @Before jest używana w metodzie zawierającej kod Java do uruchomienia przed każdym przypadkiem testowym. tzn. jest uruchamiany przed każdym wykonaniem testu.
Rozbicie (niezależnie od werdyktu)
Adnotacja @After jest używana w metodzie zawierającej kod Java do uruchomienia po każdym przypadku testowym. Te metody będą działać, nawet jeśli w przypadku testowym lub w przypadku niepowodzeń asercji zostaną zgłoszone wyjątki.
Uwaga:
- Dozwolone jest posiadanie dowolnej liczby wymienionych powyżej adnotacji.
- Wszystkie metody z adnotacją @Before będą uruchamiane przed każdym przypadkiem testowym, ale mogą być uruchamiane w dowolnej kolejności.
- Możesz dziedziczyć metody @Before i @After z superklasy. Wykonanie wygląda następująco: Jest to standardowy proces wykonywania w JUnit.
- Wykonaj metody @Before w nadklasie
- Wykonaj metody @Before w tej klasie
- Wykonaj metodę @Test w tej klasie
- Wykonaj metody @After w tej klasie
- Wykonaj metody @After w nadklasie
Przykład: Tworzenie klasy z plikiem jako urządzeniem testowym
publiczna klasa OutputFileTest{prywatne wyjście pliku;@Before public void createOutputFile (){output = new File (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// kod celu przypadku testowego}@Test public void testFile2 (){// kod celu przypadku testowego}}
W powyższym przykładzie łańcuch wykonania będzie wyglądał następująco:
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Założenie: testFile1 () działa przed testFile2 () - co nie jest gwarantowane.
Jednorazowa konfiguracja
- Możliwe jest uruchomienie metody tylko raz dla całej klasy testowej przed wykonaniem któregokolwiek z testów i przed jakąkolwiek metodą @Before .
- „Jednorazowa konfiguracja” jest przydatna przy uruchamianiu serwerów, otwieraniu komunikacji itp. Zamykanie i ponowne otwieranie zasobów dla każdego testu jest czasochłonne.
- Można to zrobić za pomocą adnotacji @BeforeClass
@BeforeClass public static void Method_Name () {// tutaj kod konfiguracji klasy}
Tylko raz zburzyć
- Podobnie jak w przypadku konfiguracji jednorazowej, dostępna jest również metoda jednorazowego czyszczenia. Jest uruchamiany po wykonaniu wszystkich metod przypadków testowych i adnotacji @After .
- Przydaje się do zatrzymywania serwerów, zamykania łączy komunikacyjnych itp.
- Można to zrobić za pomocą adnotacji @AfterClass
@AfterClass public static void Method_Name (){// tutaj kod czyszczenia klasy}
JUnit Test Suites
Jeśli chcemy wykonać wiele testów w określonej kolejności, można to zrobić łącząc wszystkie testy w jednym miejscu. To miejsce nazywa się zestawami testowymi. Więcej szczegółów na temat wykonywania zestawów testów i ich używania w JUnit zostanie omówionych w tym samouczku.
Junit Test Runner
JUnit udostępnia narzędzie do wykonywania przypadków testowych.
- Do wykonania tych testów używana jest klasa JUnitCore .
- Metoda o nazwie runClasses udostępniana przez org.junit.runner.JUnitCore służy do uruchamiania jednej lub kilku klas testowych.
- Zwracanym typem tej metody jest obiekt Result ( org.junit.runner.Result ), który służy do uzyskiwania dostępu do informacji o testach. Zobacz poniższy przykład kodu, aby uzyskać większą jasność.
public class Test {public static void main (String [] args) {Wynik wynikowy = JUnitCore.runClasses (CreateAndSetName.class);for (Failure failure: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println (result.wasSuccessful ());}}
W powyższym kodzie obiekt „result” jest przetwarzany w celu uzyskania błędów i pomyślnych wyników przypadków testowych, które wykonujemy.
Pierwszy program JUnit
Dobra znajomość SDLC, programowania w Javie i podstaw procesu testowania oprogramowania pomaga w zrozumieniu programu JUnit.
Zrozummy testy jednostkowe na przykładzie na żywo. Musimy stworzyć klasę testową z metodą testową z adnotacją @Test, jak podano poniżej:
MyFirstClassTest.java
pakiet guru99.JUnit;import static org.JUnit.Assert. *;import org.JUnit.Test;public class MyFirstClassTest {@Testpublic void myFirstMethod () {String str = "JUnit działa dobrze";assertEquals ("JUnit działa dobrze", str);}}
TestRunner.java
Aby wykonać naszą metodę testową (powyżej), musimy utworzyć moduł uruchamiający testy. W module uruchamiającym testy musimy dodać klasę testową jako parametr w metodzie runclasses () JUnitCore. Zwróci wynik testu w oparciu o to, czy test został zaliczony, czy nie.
Aby uzyskać więcej informacji na ten temat, zobacz poniższy kod:
pakiet guru99.JUnit;import org.JUnit.runner.JUnitCore;import org.JUnit.runner.Result;import org.JUnit.runner.notification.Failure;public class TestRunner {public static void main (String [] args) {Wynik wynikowy = JUnitCore.runClasses (MyFirstClassTest.class);for (Failure failure: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Wynik ==" + result.wasSuccessful ());}}
Wynik
Gdy TestRunner.java wykona nasze metody testowe, otrzymujemy wynik jako niepomyślny lub pozytywny. Poniżej znajduje się wyjaśnienie wyników:
- W tym przykładzie po wykonaniu MyFirstClassTest.java test jest zaliczany , a wynik ma kolor zielony.
- Jeśli by się nie powiodło, wynik powinien być pokazany jako czerwony, a awarię można zaobserwować w śledzeniu awarii. Zobacz poniżej JUnit gui:
Podsumowanie :
- JUnit to framework, który obsługuje kilka adnotacji w celu zidentyfikowania metody, która zawiera test.
- JUnit udostępnia adnotację o nazwie @Test, która informuje JUnit, że publiczna metoda void, w której jest używana, może działać jako przypadek testowy.
- Urządzenie testowe to kontekst, w którym jest uruchamiany przypadek testowy
- Aby wykonać wiele testów w określonej kolejności, można to zrobić, łącząc wszystkie testy w jednym miejscu. To miejsce nazywa się zestawami testowymi.
- JUnit udostępnia narzędzie do wykonywania testów, w którym możemy uruchamiać nasze przypadki testowe zwane Test Runner.