Kun kirjoitat yksikkötestipakettia, sinun on ehkä suoritettava joitain ei-testaukseen liittyviä toimintoja. Nämä toiminnot voivat olla missä tahansa muodossa. Sinun on ehkä muodostettava yhteys tietokantaan tai kerättävä resursseja ennen testin suorittamista. Kunkin testitapauksen suorittamisen jälkeen saatat joutua vapauttamaan joitain resursseja.
Näiden ei-testaukseen liittyvien toimintojen suorittaminen yksikkötestiluokan ulkopuolella saattaa olla työlästä ellei mahdotonta. Testiluokkasi onnistunut suorittaminen voi riippua näistä toiminnoista, joten JUnit tarjoaa kaksi merkintäparia tämän ongelman ratkaisemiseksi.
@Ennen kaikkea -merkintä
JUnit-testiluokassa voi olla yksi tai useampi testimenetelmä. @BeforeAll-merkintä osoittaa, että tietyn menetelmän tulee suorittaa ennen testiluokan kaikkia testimenetelmiä. Tähän huomautukseen liittyvä menetelmä suoritetaan vain kerran (testin alussa) riippumatta testiluokan testimenetelmien lukumäärästä.
Kaikkien @BeforeAll-merkintää käyttävien menetelmien on noudatettava muutamia määräyksiä. Näillä menetelmillä on oltava void return -tyyppi, niiden on oltava julkisia eivätkä yksityisiä. @BeforeAll-merkintä on ihanteellinen a
yhteys tietokantaan tai luodaan uusi tiedosto. Tämä artikkeli käyttää laskimen testiluokkaa osoittamaan, kuinka voit käyttää @BeforeAll-merkintää.Laskin-luokka
paketti com.app;
julkinenluokkaaLaskin{
julkinenstaattinenintlisätä(int numero1, int numero2){
palata numero1 + numero2;
}
julkinenstaattinenintvähentää(int numero1, int numero2){
palata numero1 - numero2;
}
julkinenstaattinenintmoninkertaistaa(int numero1, int numero2){
palata num1 * num2;
}
julkinenstaattinenintjakaa(int numero1, int numero2){
palata numero1 / numero2;
}
}
CalculatorTest-luokka
tuontistaattinenorg.junit.Jupiter.api.Väitteet.*;
tuontiorg.junit.Jupiter.api.Ennen kaikkea;
tuontiorg.junit.Jupiter.api.Testata;
tuontiorg.junit.Jupiter.api.Näyttönimi;@DisplayName("Testiluokka, joka näyttää kuinka käyttää the ennenjajälkeen huomautukset.")
luokkaaLaskintesti{
@Ennen kaikkea
julkinenstaattinenmitätönpowerOnLaskin(){
System.out.println("Laskin on päällä");
}@Testata
@Näyttönimi("Testausmenetelmä, joka lisää kaksi kokonaislukuarvoa.")
julkinenmitätöntestAdd(){
väittääEquals(7, Laskin.lisätä(3, 4));
}@Testata
@Näyttönimi("Testausmenetelmä, joka vähentää yhden kokonaisluvun arvon toisesta.")
julkinenmitätöntestiVähennys(){
väittääEquals(6, Laskin.vähentää(9, 3));
}@Testata
@Näyttönimi("Testausmenetelmä, joka kertoo kaksi kokonaislukuarvoa")
julkinenmitätöntestMultiply(){
väittääEquals(10, Laskin.kerrota(5, 2));
}
@Testata
@Näyttönimi("Testausmenetelmä, joka jakaa yhden kokonaisluvun arvon toisella")
julkinenmitätöntestDivide(){
väittääEquals(2, Laskin.jakaa(4, 2));
}
}
Tässä luokassa @BeforeAll-merkintä toimii powerOnCalculator()-menetelmän kanssa, joka tulostaa "Laskin on päällä" ennen testiajoa. Onnistuneen testin suorittaminen tulostaa seuraavan testiraportin:
Kuten näet, @BeforeAll-merkintään liittyvä menetelmä ei näy testiraportissa. Jos @BeforeAll-merkintämenetelmässä on kuitenkin virhe, testiraportin tulokset osoittavat sen epäonnistuneena.
@BeforeEach-merkintä
Kuten @BeforeAll-merkitty menetelmä, @BeforeEach-merkitty menetelmä ei näy testiraportissa. @BeforeEach annotoitu menetelmä suoritetaan ennen jokaista testimenetelmää testiluokassa. Joten jos testiluokka sisältää kaksi testimenetelmää, @BeforeEach-merkintä suoritetaan kahdesti.
tuontistaattinenorg.junit.Jupiter.api.Väitteet.*;
tuontiorg.junit.Jupiter.api.Ennen kaikkea;
tuontiorg.junit.Jupiter.api.Ennen jokaista;
tuontiorg.junit.Jupiter.api.Testata;
@DisplayName("Testiluokka, joka näyttää kuinka käyttää the ennenjajälkeen huomautukset.")
luokkaaLaskintesti{
@Ennen kaikkea
julkinenstaattinenmitätönpowerOnLaskin(){
System.out.println("Laskin on päällä");
}
@BeforeEach
julkinenmitätönselkeä Laskin(){
System.out.println("Laskin on valmis");
}
@Testata
@Näyttönimi("Testausmenetelmä, joka lisää kaksi kokonaislukuarvoa.")
julkinenmitätöntestAdd(){
väittääEquals(7, Laskin.lisätä(3, 4));
}
@Testata
@Näyttönimi("Testausmenetelmä, joka vähentää yhden kokonaisluvun arvon toisesta.")
julkinenmitätöntestiVähennys(){
väittääEquals(6, Laskin.vähentää(9, 3));
}
@Testata
@Näyttönimi("Testausmenetelmä, joka kertoo kaksi kokonaislukuarvoa")
julkinenmitätöntestMultiply(){
väittääEquals(10, Laskin.kerrota(5, 2));
}
@Testata
@Näyttönimi("Testausmenetelmä, joka jakaa yhden kokonaisluvun arvon toisella")
julkinenmitätöntestDivide(){
väittääEquals(2, Laskin.jakaa(4, 2));
}
}
@BeforeEach-merkinnän lisääminen CalculatorTest-luokkaan tuottaa seuraavan tuloksen:
@BeforeEach-merkintään liittyvä menetelmä suoritetaan neljä kertaa, kerran ennen kutakin testimenetelmää. Huomaa, että @BeforeEach-menetelmä ei ole staattinen, sillä on void-palautustyyppi, eikä se ole yksityinen, koska nämä ovat pakollisia ehtoja. On myös tärkeää huomata, että @BeforeEach-merkintään liittyvä menetelmä suoritetaan @BeforeAll-menetelmän jälkeen.
@AfterAll-merkintä
Menetelmä, jossa on @AfterAll Annotation, suoritetaan sen jälkeen, kun kaikki testiluokan testimenetelmät ovat suorittaneet suorituksensa. @AfterAll-merkintä on ihanteellinen tiedostojen perustoiminnot, kuten tiedoston sulkeminen tai yhteyden katkaiseminen tietokantaan. @AfterAll-merkintä on @BeforeAll-merkinnän vastine. @BeforeAll-merkinnän tavoin myös @AfterAll-merkinnän on oltava staattinen, sen on palautettava mitätön, eikä se saa olla yksityinen.
@Kuitenkin
julkinenstaattinenmitätönpowerOffLaskin(){
System.out.println("Laskin on pois päältä");
}
@AfterAll-merkityn menetelmän lisääminen olemassa olevaan CalculatorTest-luokkaan tulostaa seuraavan tulosteen konsoliin:
Huomaa, että powerOffCalculator()-menetelmä, joka käyttää @AfterAll-merkintää, tulostuu testiluokan lopussa, kun kaikki testimenetelmät on suoritettu.
@AfterEach-merkintä
@AfterEach-merkintä on @BeforeEach-merkinnän vastine. Niissä on samat pakolliset määräykset, jotka poikkeavat hieman @BeforeAll- ja @AfterAll-merkinnöistä. Se, mikä erottaa @AfterEach-merkinnän @BeforeEach-merkinnästä (muista kuin niiden nimistä), on se, että @AfterEach-menetelmä suoritetaan jokaisen testimenetelmän jälkeen.
@AfterEach
julkinenmitätönpalautustulokset(){
System.out.println("Tulokset ovat valmiita");
}
CalculatorTest-luokan suorittaminen tulostaa seuraavan tulosteen konsoliin:
Tulos osoittaa, että @AfterEach-merkintään liittyvä menetelmä (returnResults) tulostuu neljä kertaa. Jokainen returnResults()-menetelmän suoritus tapahtuu vasta kunkin yksikkötestin suorittamisen jälkeen. Tämä käy ilmi siitä, että returnResults()-menetelmän tulos näkyy jokaisen @BeforeEach-merkintään liittyvän menetelmän tulosteen jälkeen.
Kiillota testisarjasi merkintöjen avulla
JUnitin avulla voit käsitellä ei-testaukseen liittyviä prosesseja käyttämällä ennen ja jälkeen -parimerkintöjä. Nämä neljä merkintää kuuluvat useiden muiden merkintöjen luetteloon, jotka lisäävät arvoa testeisiisi. Toinen JUnitin merkinnöistä on @DisplayName.
Kaksi koodiesimerkkiä, jotka näyttävät koko CalculatorTest-luokan, käyttävät @DisplayName-merkintää. @DisplayName-merkintä auttaa sinua luomaan merkityksellisempiä nimiä testiluokillesi ja testimenetelmillesi.