JUnit Przypadki testowe @Before @BeforeClass Adnotacja
โก Inteligentne podsumowanie
JUnit jest najszerzej stosowanym frameworkiem do testรณw jednostkowych Java, a jego adnotacje dotyczฤ ce wyposaลผenia testowego dokลadnie kontrolujฤ , co dzieje siฤ przed i po kaลผdym uruchomieniu metody testowej w klasie testowej.
JUnit jest najpopularniejszฤ jednostkฤ Testy ramy w Java. Jest to wyraลบnie zalecane Testรณw jednostkowych. JUnit nie wymaga serwera do testowania aplikacji internetowej, dziฤki czemu proces testowania jest szybki.
JUnit Framework umoลผliwia takลผe szybkie i ลatwe generowanie przypadkรณw testowych i danych testowych. The org.junit pakiet skลada siฤ z wielu interfejsรณw i klas dla JUnit testowania, takie jak Test, Assert, After i Before. Szerszy JUnit rodzina opiera siฤ na tych samych elementach.
Czym jest przyrzฤ d testowy?
Zanim zrozumiemy, czym jest element testowy, przyjrzyjmy siฤ poniลผszemu kodowi.
Ten kod zostaล zaprojektowany do wykonania dwรณch przypadkรณw testowych na prostym pliku.
public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); }
Niewiele jest tutaj kwestii
- Kod jest nieczytelny.
- Kod nie jest ลatwy w utrzymaniu.
- Jeลli zestaw testรณw jest zลoลผony, kod moลผe zawieraฤ problemy logiczne.
Porรณwnaj ten sam kod za pomocฤ JUnit.
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Kod jest o wiele bardziej czytelny i ลatwiejszy w utrzymaniu. Powyลผsza struktura kodu to przyrzฤ d pomiarowy.
Urzฤ dzenie testowe to kontekst, w ktรณrym a JUnit Przypadek testowy biegnie. Zazwyczaj urzฤ dzenia testowe obejmujฤ :
- Obiekty lub zasoby dostฤpne dla dowolnego przypadku testowego.
- Wymagane dziaลania, ktรณre udostฤpniajฤ te obiekty i zasoby.
- Te czynnoลci sฤ
- alokacja (ustawienie)
- dealokacja (porzuca).
Konfiguracja i demontaลผ
Mecze majฤ znaczenie, poniewaลผ JUnit stosuje te haki przy kaลผdym teลcie.
- Zwykle przed kaลผdym przypadkiem testowym naleลผy wykonaฤ pewne powtarzajฤ ce siฤ zadania. Przykลad: utwรณrz poลฤ czenie z bazฤ danych.
- Podobnie na koลcu kaลผdego przypadku testowego mogฤ pojawiฤ siฤ pewne powtarzajฤ ce siฤ zadania. Przykลad: do oczyszczenia po zakoลczeniu wykonywania testu.
- JUnit Zawiera adnotacje uลatwiajฤ ce konfiguracjฤ i demontaลผ. Zapewnia zwolnienie zasobรณw i gotowoลฤ systemu testowego do kolejnego przypadku testowego.
Te JUnit adnotacje omรณwiono poniลผej.
ustawienie
@Zanim adnotacja w JUnit jest uลผywany w metodzie zawierajฤ cej Java kod, ktรณry naleลผy uruchomiฤ przed kaลผdym przypadkiem testowym, tzn. kod, ktรณry naleลผy uruchomiฤ przed kaลผdym wykonaniem testu.
Rozbiรณrka (niezaleลผnie od wyroku)
@Po adnotacja jest uลผywana w metodzie zawierajฤ cej Java Kod do uruchomienia po kaลผdym przypadku testowym. Te metody zostanฤ uruchomione nawet w przypadku wystฤ pienia wyjฤ tku w przypadku testowym lub w przypadku bลฤdรณw asercji.
Uwaga:
- Dopuszcza siฤ dowolnฤ liczbฤ adnotacji wymienionych powyลผej.
- Wszystkie metody z adnotacjฤ @Zanim in JUnit 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 przebiega nastฤpujฤ co i jest standardowym procesem wykonania w JUnit.
- Wykonaj JUnit @Przed metodami 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
JUnit Uwaga 5: te adnotacje sฤ JUnit 4 (org.junit). JUnit 5 zmieniลo ich nazwy org.junit.jupiter.apii JUnit Poniลผszy kod 4 nadal dziaลa na starym silniku.
| JUnit 4 adnotacje | JUnit odpowiednik 5 (Jowisza) | Dziaลa |
|---|---|---|
| @Zanim | @BeforeEach | Przed kaลผdฤ metodฤ testowฤ |
| @Po | @AfterEach | Po kaลผdej metodzie testowej |
| @Przed zajฤciami | @BeforeAll | Raz przed caลฤ klasฤ |
| @Po zajฤciach | @Mimo wszystko | Raz po caลej klasie |
| @Ignorowaฤ | @Wyลฤ czony | Pomija test z adnotacjami |
Przykลad: Tworzenie klasy z plikiem jako elementem testowym
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
W powyลผszym przykลadzie ลaลcuch wykonania bฤdzie wyglฤ daล nastฤpujฤ co. Diagram tracto jeden cykl tworzenia-testowania-usuwania na metodฤ testowฤ .
- utwรณrz plik wyjลciowy()
- plik testowy1()
- usuล plik wyjลciowy()
- utwรณrz plik wyjลciowy()
- plik testowy2()
- usuล plik wyjลciowy()
Zaลoลผenie:
testFile1() dziaลa przed testFile2(), co nie jest gwarantowane.
Konfiguracja jednorazowa
- Moลผliwe jest uruchomienie metody tylko raz dla caลej klasy testรณw przed wykonaniem ktรณregokolwiek z testรณw i przed jakimkolwiek innym @Zanim metoda(-y).
- โKonfiguracja jednorazowaโ jest przydatna do uruchamiania serwerรณw, nawiฤ zywania poลฤ czeล i podobnych zadaล. Zamykanie i ponowne otwieranie zasobรณw dla kaลผdego testu jest czasochลonne.
- Moลผna to zrobiฤ za pomocฤ adnotacji @Przed zajฤciami in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
Metoda musi byฤ publiczna statyczna pustka, Poniewaลผ JUnit wywoลuje jฤ zanim powstanie jakakolwiek instancja testowa.
Jednorazowe zburzenie
- Podobnie jak w przypadku konfiguracji jednorazowej, dostฤpna jest rรณwnieลผ metoda jednorazowego czyszczenia. Jest ona uruchamiana po wszystkich metodach przypadkรณw testowych i @Po adnotacje zostaลy wykonane.
- Przydatne do zatrzymaniaping serwerรณw i zamykanie ลฤ czy komunikacyjnych.
- Moลผna to zrobiฤ za pomocฤ @Po zajฤciach adnotacja.
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit Zestawy testowe
Po ustaleniu warunkรณw, powiฤ zane klasy testowe sฤ zazwyczaj grupowane i uruchamiane razem.
Jeลli chcemy wykonaฤ wiele testรณw w okreลlonej kolejnoลci, moลผemy to zrobiฤ, ลฤ czฤ c wszystkie testy w jednym miejscu. To miejsce nazywa siฤ zestawem testรณw. Wiฤcej szczegรณลรณw na temat wykonywania zestawรณw testรณw i ich wykorzystania wโฆ JUnit sฤ objฤte tym Tutorial.
JUnit Test Runner
JUnit udostฤpnia narzฤdzie do wykonywania przypadkรณw testowych.
- JUnitrdzeล klasa sลuลผy do wykonywania tych testรณw.
- Metoda tzw uruchomKlasy przez org.junit.runner.JUnitrdzeล sลuลผy do uruchomienia jednej lub kilku klas testowych.
- Typ zwracany przez tฤ metodฤ to Wynik obiekt (org.junit.runner.Wynik), ktรณry sลuลผy do uzyskiwania dostฤpu do informacji o testach. Aby uzyskaฤ wiฤcej informacji, zobacz poniลผszy przykลad kodu.
public class Test { public static void main(String[] args) { Result result = 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 informacji o bลฤdach i pomyลlnych wynikach wykonywanych przez nas przypadkรณw testowych. Pomocnicy, tacy jak AssertEquals podnieลฤ te awarie, podczas gdy @Ignorowaฤ pomija test.
JUnit Uwaga 5: JUnitrdzeล jest JUnit 4 biegaczy. JUnit 5 zastฤpuje go JUnit Platforma wyrzutnia API, zwykle uruchamiane przez IDE, Gradle lub Maven Surefire.
Imiฤ JUnit Program
Dobra znajomoลฤ SDLC, Java programowanie i podstawy Testowanie oprogramowania proces pomaga w zrozumieniu JUnit program, podobnie jak wiedza o tym, jak testy jednostkowe rรณลผniฤ siฤ od testรณw integracyjnych.
Zrozumiemy testowanie jednostkowe na ลผywym przykลadzie. Musimy utworzyฤ klasฤ testowฤ z metodฤ testowฤ adnotowanฤ @Test jak podano poniลผej:
MojaFirstClassTest.java
package guru99.JUnit; import static org.junit.Assert.*; import org.junit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } }
TestRunner.java
Aby wykonaฤ naszฤ metodฤ testowฤ (powyลผej), musimy utworzyฤ program uruchamiajฤ cy testy. W programie uruchamiajฤ cym testy musimy dodaฤ klasฤ testowฤ jako parametr w JUnitMetoda runClasses() programu Core. Zwraca wynik testu w zaleลผnoลci od tego, czy test zakoลczyล siฤ pomyลlnie, czy niepomyลlnie.
Wiฤcej szczegรณลรณw znajdziesz w poniลผszym kodzie:
package 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) { Result result = JUnitCore.runClasses(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Wydajnoลฤ
Pewnego razu TestRunner.java Wykonuje nasze metody testowe i otrzymujemy wynik jako niepowodzenie lub powodzenie. Poniลผej znajduje siฤ wyjaลnienie wyniku:
- W tym przykลadzie po wykonaniu MojaFirstClassTest.java, test zostaล zaliczony, a wynik jest zielony.
- Gdyby siฤ nie udaลo, wynik zostaลby wyลwietlony na czerwono, a awariฤ moลผna zaobserwowaฤ na wyลwietlaczu. trace. Zobacz JUnit Poniลผej interfejs graficzny:


