Kui kirjutate ühikutesti komplekti, võib teil tekkida mõni testiga mitteseotud tegevus. Need tegevused võivad olla mis tahes vormis. Enne testi sooritamist peate võib-olla looma ühenduse andmebaasiga või koguma ressursse. Pärast iga testjuhtumi käivitamist peate võib-olla vabastama mõned ressursid.
Nende testimisega mitteseotud tegevuste sooritamine väljaspool ühikutesti klassi ulatust võib olla tüütu, kui mitte võimatu. Teie testklassi edukas täitmine võib neist tegevustest sõltuda, seega pakub JUnit selle probleemi lahendamiseks kahte paari märkusi.
Märkus @BeforeAll
JUniti testklassil võib olla üks või mitu testimismeetodit. Annotatsioon @BeforeAll annab märku, et konkreetne meetod peaks käivitama enne kõiki testimisklassi katsemeetodeid. Selle märkusega seotud meetod käivitatakse ainult üks kord (testi alguses), olenemata testmeetodite arvust testiklassis.
Kõik meetodid, mis kasutavad @BeforeAll märkust, peavad järgima mõningaid nõudeid. Nendel meetoditel peab olema tühine tagastustüüp, need peavad olema avalikud ega tohi olla privaatsed. @BeforeAll märkus sobib ideaalselt a
ühendus andmebaasiga või uue faili loomine. Selles artiklis kasutatakse kalkulaatori testklassi, et näidata, kuidas saate @BeforeAll märkust kasutada.Kalkulaatori klass
pakett com.app;
avalikklassKalkulaator{
avalikstaatilineintlisama(int number1, int number2){
tagasi arv1 + arv2;
}
avalikstaatilineintlahutada(int number1, int number2){
tagasi number1 - number2;
}
avalikstaatilineintkorrutada(int number1, int number2){
tagasi arv1 * arv2;
}
avalikstaatilineintjagama(int number1, int number2){
tagasi arv1 / number2;
}
}
Kalkulaatori testi klass
importidastaatilineorg.junit.jupiter.api.Väited.*;
importidaorg.junit.jupiter.api.Enne kõike;
importidaorg.junit.jupiter.api.Testi;
importidaorg.junit.jupiter.api.Kuvanimi;@DisplayName("Testiklass, mis näitab, kuidas kasutada a ennejapärast märkused.")
klassKalkulaatori test{
@BeforeAll
avalikstaatilinetühinepowerOnCalculator(){
System.out.println("Kalkulaator on sisse lülitatud");
}@Test
@DisplayName("Testimismeetod, mis lisab kaks täisarvu.")
avaliktühinetestLisa(){
kinnitama Võrdsed(7, Kalkulaator.lisama(3, 4));
}@Test
@DisplayName("Testimismeetod, mis lahutab ühe täisarvu teisest väärtusest.")
avaliktühinetestLahutada(){
kinnitama Võrdsed(6, Kalkulaator.lahutada(9, 3));
}@Test
@DisplayName("Testimismeetod, mis korrutab kaks täisarvu")
avaliktühinetestMultiply(){
kinnitama Võrdsed(10, Kalkulaator.korrutada(5, 2));
}
@Test
@DisplayName("Testimismeetod, mis jagab ühe täisarvu väärtuse teisega")
avaliktühinetestDivide(){
kinnitama Võrdsed(2, Kalkulaator.jaga(4, 2));
}
}
Selles klassis töötab @BeforeAll annotatsioon powerOnCalculator() meetodiga, mis prindib enne mis tahes testkäivitust teksti "Kalkulaator on sisse lülitatud". Eduka testi täitmine prindib järgmise testiaruande:
Nagu näete, @BeforeAll märkusega seotud meetodit testaruandes ei kuvata. Kui aga @BeforeAll märkimismeetodis on viga, näitavad testiaruande tulemused seda ebaõnnestunult.
@BeforeEach annotatsioon
Sarnaselt @BeforeAll märkusega meetodile ei kuvata @BeforeEach annoteeritud meetodit testaruandes. Annoteeritud meetod @BeforeEach käivitatakse enne iga testmeetodit testklassis. Seega, kui testklass sisaldab kahte testmeetodit, käivitatakse @BeforeEach annotatsioon kaks korda.
importidastaatilineorg.junit.jupiter.api.Väited.*;
importidaorg.junit.jupiter.api.Enne kõike;
importidaorg.junit.jupiter.api.Enne iga;
importidaorg.junit.jupiter.api.Testi;
@DisplayName("Testiklass, mis näitab, kuidas kasutada a ennejapärast märkused.")
klassKalkulaatori test{
@BeforeAll
avalikstaatilinetühinepowerOnCalculator(){
System.out.println("Kalkulaator on sisse lülitatud");
}
@BeforeEach
avaliktühineselge kalkulaator(){
System.out.println("Kalkulaator on valmis");
}
@Test
@DisplayName("Testimismeetod, mis lisab kaks täisarvu.")
avaliktühinetestLisa(){
kinnitama Võrdsed(7, Kalkulaator.lisama(3, 4));
}
@Test
@DisplayName("Testimismeetod, mis lahutab ühe täisarvu teisest väärtusest.")
avaliktühinetestLahutada(){
kinnitama Võrdsed(6, Kalkulaator.lahutada(9, 3));
}
@Test
@DisplayName("Testimismeetod, mis korrutab kaks täisarvu")
avaliktühinetestMultiply(){
kinnitama Võrdsed(10, Kalkulaator.korrutada(5, 2));
}
@Test
@DisplayName("Testimismeetod, mis jagab ühe täisarvu väärtuse teisega")
avaliktühinetestDivide(){
kinnitama Võrdsed(2, Kalkulaator.jaga(4, 2));
}
}
Annotatsiooni @BeforeEach lisamine klassi CalculatorTest annab järgmise väljundi:
@BeforeEach annotatsiooniga seotud meetod käivitatakse neli korda, üks kord enne iga testmeetodit. Pange tähele, et @BeforeEach meetod ei ole staatiline, sellel on tühine tagastustüüp ja see ei ole privaatne, kuna need on kohustuslikud tingimused. Samuti on oluline märkida, et @BeforeEach annotatsiooniga seotud meetod töötab pärast @BeforeAll meetodit.
@AfterAll annotatsioon
@AfterAll Annotatsiooniga meetod käivitub pärast seda, kui kõik testklassi katsemeetodid on oma täitmise lõpule viinud. @AfterAll märkus sobib ideaalselt põhilised failitoimingud, näiteks faili sulgemine või andmebaasiga ühenduse katkestamine. Märkus @AfterAll on vastand märkusele @BeforeAll. Nagu @BeforeAll märkus, peab ka @AfterAll märkus olema staatiline, olema tühi ja suur osa mitte privaatne.
@Pealegi
avalikstaatilinetühinepowerOffCalculator(){
System.out.println("Kalkulaator on välja lülitatud");
}
@AfterAll märkusega meetodi lisamine olemasolevasse CalculatorTest klassi prindib konsooli järgmise väljundi:
Pange tähele, et meetod powerOffCalculator(), mis kasutab @AfterAll annotatsiooni, prindib testklassi lõpus pärast kõigi testmeetodite käivitamist.
@AfterEach märkus
@AfterEach märkus on @BeforeEach annotatsiooni vaste. Neil on samad kohustuslikud sätted, mis erinevad veidi @BeforeAll ja @AfterAll märkustest. @AfterEach annotatsiooni eristab @BeforeEach annotatsioonist (peale nende nimede) see, et meetod @AfterEach töötab pärast iga testmeetodit.
@AfterEach
avaliktühinetagastustulemused(){
System.out.println("Tulemused on valmis");
}
Klassi CalculatorTest käivitamine prindib konsooli järgmise väljundi:
Väljund näitab, et @AfterEach annotatsiooniga seotud meetod (returnResults) prindib neli korda. Meetodi returnResults() iga täitmine toimub alles pärast iga ühikutesti täitmist. See ilmneb sellest, et meetodi returnResults() väljund ilmub iga @BeforeEach annotatsiooniga seotud meetodi väljundi järel.
Lihvige oma testkomplekte märkuste abil
JUnit võimaldab teil käsitleda mitte-testiga seotud protsesse, kasutades enne ja pärast paarimärkusi. Need neli annotatsiooni kuuluvad mitmete teiste annotatsioonide loendisse, mis lisavad teie testidele väärtust. Teine JUniti märkus on @DisplayName.
Kaks koodinäidet, mis kuvavad kogu CalculatorTesti klassi, kasutavad @DisplayName märkust. Märkus @DisplayName aitab teil luua oma testiklassidele ja katsemeetoditele tähendusrikkamaid nimesid.