Kada pišete jedinični testni paket, možda ćete morati izvršiti neke aktivnosti koje nisu povezane s testiranjem. Ove aktivnosti mogu imati bilo koji oblik. Možda ćete se morati povezati s bazom podataka ili prikupiti resurse prije izvođenja testa. Nakon što se svaki testni slučaj izvrši, možda ćete morati osloboditi neke resurse.
Izvođenje bilo koje od ovih aktivnosti koje nisu povezane s testiranjem izvan opsega klase jediničnog testiranja može biti zamorno ako ne i nemoguće. Uspješno izvođenje vaše testne klase može ovisiti o ovim aktivnostima, tako da JUnit osigurava dva para napomena za rješavanje ovog problema.
Napomena @BeforeAll
Testna klasa JUnit može imati jednu ili više testnih metoda. Napomena @BeforeAll signalizira da bi se određena metoda trebala izvršiti prije svih testnih metoda u testnoj klasi. Metoda povezana s ovom napomenom izvršava se samo jednom (na početku testa) bez obzira na broj testnih metoda u test klasi.
Svaka metoda koja koristi napomenu @BeforeAll mora slijediti nekoliko uvjeta. Ove metode moraju imati povratni tip void, moraju biti javne i ne smiju biti privatne. Napomena @BeforeAll idealna je za uspostavljanje a
povezivanje s bazom podataka ili stvaranje nove datoteke. Ovaj članak koristi testnu klasu kalkulatora da pokaže kako možete koristiti napomenu @BeforeAll.Razred kalkulatora
paket com.app;
javnostrazredaKalkulator{
javnoststatičkiintdodati(int broj1, int broj2){
povratak num1 + num2;
}
javnoststatičkiintoduzeti(int broj1, int broj2){
povratak num1 - num2;
}
javnoststatičkiintpomnožiti(int broj1, int broj2){
povratak num1 * num2;
}
javnoststatičkiintpodijeliti(int broj1, int broj2){
povratak num1 / num2;
}
}
Klasa CalculatorTest
uvozstatičkiorg.junit.Jupiter.api.Tvrdnje.*;
uvozorg.junit.Jupiter.api.PrijeSvih;
uvozorg.junit.Jupiter.api.Test;
uvozorg.junit.Jupiter.api.Ime za prikaz;@DisplayName("Testna klasa koja pokazuje kako koristiti the prijeinakon bilješke.")
razredaKalkulatorTest{
@PrijeSvih
javnoststatičkiponištitipowerOnCalculator(){
System.out.println("Kalkulator je uključen");
}@Test
@PrikazName("Metoda testiranja koja zbraja dvije cjelobrojne vrijednosti.")
javnostponištititestAdd(){
assertEquals(7, Kalkulator.dodati(3, 4));
}@Test
@PrikazName("Metoda testiranja koja oduzima jednu cjelobrojnu vrijednost od druge.")
javnostponištititestSubtract(){
assertEquals(6, Kalkulator.oduzeti(9, 3));
}@Test
@PrikazName("Metoda testiranja koja množi dvije cjelobrojne vrijednosti")
javnostponištititestMultiply(){
assertEquals(10, Kalkulator.pomnožiti(5, 2));
}
@Test
@PrikazName("Metoda testiranja koja dijeli jednu cjelobrojnu vrijednost drugom")
javnostponištititestDivide(){
assertEquals(2, Kalkulator.podijeliti(4, 2));
}
}
U ovoj klasi, napomena @BeforeAll radi s metodom powerOnCalculator(), koja ispisuje "Kalkulator je uključen" prije bilo kakvog testnog izvođenja. Uspješno izvršenje testa ispisuje sljedeće izvješće o testu:
Kao što vidite, metoda povezana s napomenom @BeforeAll ne pojavljuje se u izvješću o testiranju. Međutim, ako postoji pogreška u metodi označavanja @BeforeAll, rezultati izvješća o testiranju to će pokazati greškom.
Napomena @BeforeEach
Kao i označena metoda @BeforeAll, označena metoda @BeforeEach neće se pojaviti u izvješću o testiranju. Označena metoda @BeforeEach izvršava se prije svake testne metode u testnoj klasi. Dakle, ako testna klasa sadrži dvije testne metode, tada će se napomena @BeforeEach izvršiti dvaput.
uvozstatičkiorg.junit.Jupiter.api.Tvrdnje.*;
uvozorg.junit.Jupiter.api.PrijeSvih;
uvozorg.junit.Jupiter.api.PrijeSvakog;
uvozorg.junit.Jupiter.api.Test;
@DisplayName("Testna klasa koja pokazuje kako koristiti the prijeinakon bilješke.")
razredaKalkulatorTest{
@PrijeSvih
javnoststatičkiponištitipowerOnCalculator(){
System.out.println("Kalkulator je uključen");
}
@PrijeSvakog
javnostponištiticlearCalculator(){
System.out.println("Kalkulator je spreman");
}
@Test
@PrikazName("Metoda testiranja koja zbraja dvije cjelobrojne vrijednosti.")
javnostponištititestAdd(){
assertEquals(7, Kalkulator.dodati(3, 4));
}
@Test
@PrikazName("Metoda testiranja koja oduzima jednu cjelobrojnu vrijednost od druge.")
javnostponištititestSubtract(){
assertEquals(6, Kalkulator.oduzeti(9, 3));
}
@Test
@PrikazName("Metoda testiranja koja množi dvije cjelobrojne vrijednosti")
javnostponištititestMultiply(){
assertEquals(10, Kalkulator.pomnožiti(5, 2));
}
@Test
@PrikazName("Metoda testiranja koja dijeli jednu cjelobrojnu vrijednost drugom")
javnostponištititestDivide(){
assertEquals(2, Kalkulator.podijeliti(4, 2));
}
}
Dodavanje napomene @BeforeEach klasi CalculatorTest proizvodi sljedeći izlaz:
Metoda povezana s napomenom @BeforeEach izvodi se četiri puta, jednom prije svake testne metode. Trebate imati na umu da metoda @BeforeEach nije statična, ima povratni tip void i nije privatna, budući da su to obvezne odredbe. Također je važno napomenuti da se metoda povezana s napomenom @BeforeEach pokreće nakon metode @BeforeAll.
Napomena @AfterAll
Metoda s napomenom @AfterAll izvršit će se nakon što sve testne metode u testnoj klasi dovrše svoje izvršenje. Napomena @AfterAll idealna je za osnovne operacije s datotekama, poput zatvaranja datoteke ili prekida veze s bazom podataka. Napomena @AfterAll je pandan napomeni @BeforeAll. Kao i napomena @BeforeAll, napomena @AfterAll mora biti statična, mora vraćati void i mnogo toga ne smije biti privatno.
@Nakon svega
javnoststatičkiponištitipowerOffCalculator(){
System.out.println("Kalkulator je isključen");
}
Dodavanje označene metode @AfterAll postojećoj klasi CalculatorTest ispisuje sljedeći izlaz na konzolu:
Imajte na umu da se metoda powerOffCalculator(), koja koristi napomenu @AfterAll, ispisuje na kraju testne klase, nakon što se izvrše sve testne metode.
Napomena @AfterEach
Bilješka @AfterEach je pandan oznaci @BeforeEach. Imaju iste obvezne odredbe, koje se malo razlikuju od onih za napomene @BeforeAll i @AfterAll. Ono po čemu se primjedba @AfterEach razlikuje od primjedbe @BeforeEach (osim njihovih imena) jest to što se metoda @AfterEach pokreće nakon svake ispitne metode.
@PoslijeSvakog
javnostponištitireturnRezultati(){
System.out.println("Rezultati su spremni");
}
Izvršenje klase CalculatorTest ispisuje sljedeći izlaz na konzolu:
Izlaz pokazuje da se metoda povezana s napomenom @AfterEach (returnResults) ispisuje četiri puta. Svako izvršavanje metode returnResults() događa se tek nakon izvršenja svakog jediničnog testa. To je vidljivo iz činjenice da se izlaz metode returnResults() pojavljuje nakon svakog izlaza iz metode povezane s napomenom @BeforeEach.
Ugladite svoje pakete testova pomoću komentara
JUnit vam omogućuje da upravljate procesima koji nisu povezani s testom pomoću napomena prije i poslije para. Ove četiri napomene pripadaju popisu nekoliko drugih napomena koje dodaju vrijednost vašim testovima. Još jedna JUnit-ova napomena je @DisplayName.
Dva primjera koda koji prikazuju kompletnu klasu CalculatorTest koriste oznaku @DisplayName. Bilješka @DisplayName pomaže vam da stvorite smislenija imena za svoje ispitne klase i ispitne metode.