Kad rakstāt vienības pārbaudes komplektu, jums var būt jāveic dažas ar testēšanu nesaistītas darbības. Šīs darbības var izpausties jebkurā formā. Pirms pārbaudes veikšanas, iespējams, būs jāizveido savienojums ar datu bāzi vai jāapkopo resursi. Pēc katra testa gadījuma izpildes, iespējams, būs jāatbrīvo daži resursi.

Jebkuru šo ar testu nesaistīto darbību veikšana ārpus vienības pārbaudes klases darbības jomas var būt nogurdinoša vai pat neiespējama. Jūsu pārbaudes klases veiksmīga izpilde var būt atkarīga no šīm darbībām, tāpēc JUnit nodrošina divus anotāciju pārus, lai atrisinātu šo problēmu.

@Pirms visa anotācija

JUnit testa klasē var būt viena vai vairākas pārbaudes metodes. @BeforeAll anotācija norāda, ka konkrētai metodei ir jāizpilda pirms visām testa metodēm testa klasē. Ar šo anotāciju saistītā metode tiek izpildīta tikai vienu reizi (testa sākumā) neatkarīgi no testa metožu skaita testa klasē.

Jebkurai metodei, kurā tiek izmantota @BeforeAll anotācija, ir jāievēro daži noteikumi. Šīm metodēm ir jābūt nederīgam atgriešanas veidam, tām jābūt publiskām un nedrīkst būt privātām. @BeforeAll anotācija ir ideāli piemērota, lai izveidotu a

savienojums ar datu bāzi vai izveidojot jaunu failu. Šajā rakstā tiek izmantota kalkulatora testa klase, lai parādītu, kā varat izmantot @BeforeAll anotāciju.

Kalkulatora klase

iepakojums com.app;
publiskiklasēKalkulators{
publiskistatisksstarptpievienot(starpt num1, starpt num2){
atgriezties num1 + num2;
}
publiskistatisksstarptatņemt(starpt num1, starpt num2){
atgriezties num1 - num2;
}
publiskistatisksstarptvairoties(starpt num1, starpt num2){
atgriezties num1 * num2;
}
publiskistatisksstarptsadalīt(starpt num1, starpt num2){
atgriezties num1 / num2;
}
}

Kalkulatora pārbaudes klase

importsstatisksorg.junit.jupiters.api.Apgalvojumi.*;
importsorg.junit.jupiters.api.Pirms visa;
importsorg.junit.jupiters.api.Pārbaude;
importsorg.junit.jupiters.api.Displeja nosaukums;

@DisplayName("Pārbaudes klase, kas parāda, kā izmantot uz pirms tamunpēc anotācijas.")
klasēCalculatorTest{
@Pirms visa
publiskistatisksnederīgspowerOnCalculator(){
System.out.println("Kalkulators ir ieslēgts");
}

@Pārbaude
@DisplayName("Testēšanas metode, kas pievieno divas veselas vērtības.")
publiskinederīgstestPievienot(){
apgalvoEquals(7, Kalkulators.pievienot(3, 4));
}

@Pārbaude
@DisplayName("Pārbaudes metode, kas atņem vienu veselu skaitļu vērtību no citas.")
publiskinederīgstestAtņemt(){
apgalvoEquals(6, Kalkulators.atņemt(9, 3));
}

@Pārbaude
@DisplayName("Pārbaudes metode, kas reizina divas veselas vērtības")
publiskinederīgstestReizināt(){
apgalvoEquals(10, Kalkulators.vairot(5, 2));
}

@Pārbaude
@DisplayName("Pārbaudes metode, kas dala vienu vesela skaitļa vērtību ar citu")
publiskinederīgstestDivide(){
apgalvoEquals(2, Kalkulators.dalīt(4, 2));
}
}

Šajā klasē @BeforeAll anotācija darbojas ar metodi powerOnCalculator(), kas pirms jebkuras testa darbības izdrukā “Kalkulators ir ieslēgts”. Veiksmīga testa izpilde izdrukā šādu testa atskaiti:

Kā redzat, metode, kas saistīta ar @BeforeAll anotāciju, testa ziņojumā neparādās. Tomēr, ja @BeforeAll anotācijas metodē ir kļūda, testa ziņojuma rezultāti to norādīs ar kļūmi.

@BeforeEach anotācija

Tāpat kā @BeforeAll anotētā metode, arī @BeforeEach anotētā metode testa ziņojumā netiks parādīta. @BeforeEach anotētā metode tiek izpildīta pirms katras pārbaudes metodes testa klasē. Tātad, ja testa klasē ir divas pārbaudes metodes, @BeforeEach anotācija tiks izpildīta divas reizes.

importsstatisksorg.junit.jupiters.api.Apgalvojumi.*;
importsorg.junit.jupiters.api.Pirms visa;
importsorg.junit.jupiters.api.PirmsKatra;
importsorg.junit.jupiters.api.Pārbaude;
@DisplayName("Pārbaudes klase, kas parāda, kā izmantot uz pirms tamunpēc anotācijas.")
klasēCalculatorTest{
@Pirms visa
publiskistatisksnederīgspowerOnCalculator(){
System.out.println("Kalkulators ir ieslēgts");
}
@PirmsEach
publiskinederīgsskaidrskalkulators(){
System.out.println("Kalkulators ir gatavs");
}
@Pārbaude
@DisplayName("Testēšanas metode, kas pievieno divas veselas vērtības.")
publiskinederīgstestPievienot(){
apgalvoEquals(7, Kalkulators.pievienot(3, 4));
}
@Pārbaude
@DisplayName("Pārbaudes metode, kas atņem vienu veselu skaitļu vērtību no citas.")
publiskinederīgstestAtņemt(){
apgalvoEquals(6, Kalkulators.atņemt(9, 3));
}
@Pārbaude
@DisplayName("Pārbaudes metode, kas reizina divas veselas vērtības")
publiskinederīgstestReizināt(){
apgalvoEquals(10, Kalkulators.vairot(5, 2));
}
@Pārbaude
@DisplayName("Pārbaudes metode, kas dala vienu vesela skaitļa vērtību ar citu")
publiskinederīgstestDivide(){
apgalvoEquals(2, Kalkulators.dalīt(4, 2));
}
}

Pievienojot @BeforeEach anotāciju CalculatorTest klasei, tiek iegūta šāda izvade:

Ar @BeforeEach anotāciju saistītā metode tiek izpildīta četras reizes, vienu reizi pirms katras pārbaudes metodes. Ņemiet vērā, ka @BeforeEach metode nav statiska, tai ir spēkā neesošs atgriešanas veids un tā nav privāta, jo tie ir obligāti nosacījumi. Ir arī svarīgi atzīmēt, ka ar @BeforeEach anotāciju saistītā metode tiek izpildīta pēc @BeforeAll metodes.

@AfterAll anotācija

Metode ar @AfterAll anotāciju tiks izpildīta pēc tam, kad visas testa klases pārbaudes metodes būs pabeigušas to izpildi. @AfterAll anotācija ir ideāli piemērota pamata failu operācijas, piemēram, aizverot failu vai atvienojot no datu bāzes. @AfterAll anotācija ir @BeforeAll anotācijas ekvivalents. Tāpat kā @BeforeAll anotācijai, arī @AfterAll anotācijai ir jābūt statiskai, jāatgriežas nederīgai un lielai daļai nav jābūt privātai.

@Galu galā
publiskistatisksnederīgspowerOffCalculator(){
System.out.println("Kalkulators ir izslēgts");
}

Pievienojot @AfterAll anotēto metodi esošajai CalculatorTest klasei, konsolē tiek izdrukāta šāda izvade:

Ņemiet vērā, ka metode powerOffCalculator(), kas izmanto @AfterAll anotāciju, tiek drukāta testa klases beigās pēc visu testa metožu izpildes.

@AfterEach anotācija

@AfterEach anotācija ir @BeforeEach anotācijas ekvivalents. Tiem ir vienādi obligātie nosacījumi, kas nedaudz atšķiras no @BeforeAll un @AfterAll anotācijām. @AfterEach anotācija atšķiras no @BeforeEach anotācijas (izņemot to nosaukumus) ir tas, ka metode @AfterEach tiek izpildīta pēc katras pārbaudes metodes.

@AfterEach
publiskinederīgsatgriešanās rezultāti(){
System.out.println("Rezultāti ir gatavi");
}

Izpildot klasi CalculatorTest, konsolē tiek izdrukāta šāda izvade:

Izvade parāda, ka ar @AfterEach anotāciju saistītā metode (returnResults) tiek drukāta četras reizes. Katra returnResults() metodes izpilde notiek tikai pēc katras vienības pārbaudes izpildes. Par to liecina fakts, ka returnResults() metodes izvade parādās pēc katras metodes izvades, kas saistīta ar @BeforeEach anotāciju.

Pulējiet savus testa komplektus, izmantojot anotācijas

JUnit ļauj apstrādāt ar testēšanu nesaistītus procesus, izmantojot pāra anotācijas pirms un pēc. Šīs četras anotācijas pieder pie vairāku citu anotāciju saraksta, kas papildina jūsu testu vērtību. Vēl viena no JUnit anotācijām ir @DisplayName.

Divos koda piemēros, kas parāda visu CalculatorTest klasi, tiek izmantota @DisplayName anotācija. @DisplayName anotācija palīdz izveidot jēgpilnākus nosaukumus jūsu testa klasēm un testa metodēm.