Kuidas kasutada JUnitis märkusi @Enne ja @After

Kuidas kasutada JUnitis märkusi @Enne ja @After

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.





PÄEVA VIDEO MAKKEUSE

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.





kuidas vähendada jpeg eraldusvõimet

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

package com.app; 
public class Calculator {
public static int add(int num1, int num2) {
return num1 + num2;
}
public static int subtract(int num1, int num2) {
return num1 - num2;
}
public static int multiply(int num1, int num2) {
return num1 * num2;
}
public static int divide(int num1, int num2) {
return num1 / num2;
}
}

Kalkulaatori testiklass

import static org.junit.jupiter.api.Assertions.*; 
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;

@DisplayName("Test class demonstrating how to use the before and after annotations.")
class CalculatorTest {
@BeforeAll
public static void powerOnCalculator() {
System.out.println("The calculator is on");
}

@Test
@DisplayName("Testing method that adds two integer values.")
public void testAdd() {
assertEquals(7, Calculator.add(3, 4));
}

@Test
@DisplayName("Testing method that subtracts one integer value from another.")
public void testSubtract() {
assertEquals(6, Calculator.subtract(9, 3));
}

@Test
@DisplayName("Testing method that multiplies two integer values")
public void testMultiply() {
assertEquals(10, Calculator.multiply(5, 2));
}

@Test
@DisplayName("Testing method that divides one integer value by another")
public void testDivide() {
assertEquals(2, Calculator.divide(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:



  EnneKõigi märkuste aruanne

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.





import static org.junit.jupiter.api.Assertions.*; 
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@DisplayName("Test class demonstrating how to use the before and after annotations.")
class CalculatorTest {
@BeforeAll
public static void powerOnCalculator() {
System.out.println("The calculator is on");
}
@BeforeEach
public void clearCalculator() {
System.out.println("The calculator is ready");
}
@Test
@DisplayName("Testing method that adds two integer values.")
public void testAdd() {
assertEquals(7, Calculator.add(3, 4));
}
@Test
@DisplayName("Testing method that subtracts one integer value from another.")
public void testSubtract() {
assertEquals(6, Calculator.subtract(9, 3));
}
@Test
@DisplayName("Testing method that multiplies two integer values")
public void testMultiply() {
assertEquals(10, Calculator.multiply(5, 2));
}
@Test
@DisplayName("Testing method that divides one integer value by another")
public void testDivide() {
assertEquals(2, Calculator.divide(4, 2));
}
}

Annotatsiooni @BeforeEach lisamine klassi CalculatorTest annab järgmise väljundi:

  EnneIga annotatsiooni väljund

@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.

iphone mängud, mis ei kasuta andmeid
@AfterAll 
public static void powerOffCalculator() {
System.out.println("The calculator is off");
}

@AfterAll märkusega meetodi lisamine olemasolevasse CalculatorTest klassi prindib konsooli järgmise väljundi:

kuidas ma saan oma arvuti Samsungi telefoni ära tunda?
  AfterAll annotatsiooni väljund

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 
public void returnResults() {
System.out.println("The results are ready");
}

Klassi CalculatorTest käivitamine prindib konsooli järgmise väljundi:

  AfterEach annotatsiooni väljund

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.