Clasa JUnit Assertions conține o colecție de metode statice care vă permit să efectuați teste unitare. Afirmațiile sunt una dintre caracteristicile de bază ale JUnit. Această clasă are peste cincizeci de metode diverse. Unele teste de clasă Assertions vor eșua dacă o condiție este adevărată, în timp ce altele vor eșua dacă o condiție este falsă.
Clasa Assertions are, de asemenea, multe metode supraîncărcate. Fiecare metodă de afirmare are cel puțin două metode supraîncărcate. Descoperiți câteva dintre cele mai populare metode de clasă Assertions și aflați cum să le utilizați pentru a efectua teste unitare.
Metoda assertEquals
Metoda JUnit 5 assertEquals are peste zece variante. Această metodă este una dintre cele mai populare metode de clasă Assertions. O variantă a metodei assertEquals ia o valoare așteptată și funcția pe care doriți să o evaluați (valoarea reală). O a doua variantă majoră necesită un al treilea argument suplimentar. Acesta este un mesaj de eroare care se va afișa dacă Test unitar JUnit eșuează.
Supraîncărcarea metodei assertEquals are loc cu diferite tipuri de date. Unele metode de supraîncărcare assertEquals au un al patrulea argument numit delta. Alte versiuni înlocuiesc șirul de eșec cu o interfață funcțională Furnizor, sub forma unui expresie lambda.
Clasa Java AssertionsMethods
pachet com.program;
publicclasăAfirmațiiMetode{
publicstaticintpătrat(int num){
întoarcere num * num;
}
}
Clasa Java AssertionsMethods de mai sus are o singură metodă numită pătrat. Metoda pătratului ia o valoare întreagă și returnează pătratul acesteia. Pentru a testa metoda pătrată și orice metodă viitoare din clasa AssertionsMethods, va trebui să creați un caz de testare JUnit.
Cazul de testare JUnit AssertionsMethodsTest
pachet com.program;
importstaticorg.junit.Afirma.assertEquals;
importstaticorg.junit.Jupiter.api.Aserţiuni.*;importorg.junit.Jupiter.api.Test;
clasăAfirmațiiMetodeTest{
@Test
goltestSquare(){
assertEquals(25, Metode de afirmare.pătrat(5));
assertEquals (36, AssertionMethods.square (6), "Valorile tale pătrate nu s-au potrivit.");
assertEquals (49, AssertionMethods.square (7), () ->"Valorile tale pătrate nu s-au potrivit.");
}
}
Metoda testSquare() folosește trei variante ale assertEquals() pentru a testa metoda square(). Fiecare assertEquals() este un succes, deoarece toate valorile așteptate se potrivesc cu valorile reale returnate de metoda square().
Metoda assertNull
Clasa JUnit Assertions are exact trei metode assertNull. Fiecare dintre aceste metode preia unul sau mai multe argumente și afirmă dacă obiectul dat este nul. Dacă un anumit obiect nu este nul, atunci testul va eșua.
@Test
publicgoltestStringValue(){
Şir stringValue = nul;
assertNull (stringValue);
assertNull (stringValue, "Valoarea șirului dvs. nu este nulă");
assertNull (stringValue, () ->"Valoarea șirului dvs. nu este nulă");
}
Prima metodă assertNull() preia un obiect șir și verifică dacă este nul. A doua metodă assertNull() preia un obiect șir și un mesaj șir pentru a afișa dacă testul eșuează. A treia și ultima metodă assertNull() preia obiectul pe care doriți să-l evaluați și o interfață funcțională a furnizorului.
În cazul de testare de mai sus, interfața Furnizor acționează ca o țintă de atribuire pentru o expresie lambda. Expresia lambda generează un mesaj de eroare dacă testul eșuează.
Metoda assertTrue
Metoda assertTrue() are șase variante. Fiecare metodă afirmă dacă o anumită condiție este adevărată. Dacă o condiție assertTrue() este falsă, testul va eșua.
@Test
goltestEvenNumbers(){
int num1 = 10;
int num2 = 16;
int num3 = 26;
assertTrue (num1 < num2);
assertTrue (num3 > num2, "Starea ta nu este adevărată.");
assertTrue (num1 < num3, () ->" Starea ta nu este adevărată.");
assertTrue(() -> num1%2 == 0);
assertTrue(() -> num2%2 == 0, "Valoarea ta nu este un număr par.");
assertTrue(() -> num3%2 == 0, () ->"Valoarea ta nu este un număr par.");
}
Metoda testEvenNumbers() demonstrează cum se utilizează toate cele șase metode assertTrue(). Toate metodele de mai sus sunt adevărate, prin urmare, acest test unitar se execută fără eșec sau eroare.
- assertTrue (condiție booleană): această metodă ia o condiție booleană și afirmă dacă este adevărată. Exemplul acestei metode din codul de mai sus afirmă dacă prima valoare întreagă este mai mică decât a doua.
- assertTrue (condiție booleană, mesaj șir): această metodă necesită o condiție booleană pentru a testa și un șir pentru a afișa dacă este falsă.
- assertTrue (condiție booleană, furnizor
messageSupplier): această metodă ia o interfață funcțională booleană și o interfață funcțională Furnizor, ca expresie lambda. Furnizorul de mesaje conține un șir de afișat dacă condiția booleană este falsă. - assertTrue (BooleanSupplier booleanSupplier): această metodă preia o interfață funcțională BooleanSupplier, sub forma unei expresii lambda care se evaluează ca adevărat sau fals. Exemplul acestei metode din cod folosește o expresie lambda. Testează restul primului întreg împărțit la doi pentru a determina dacă este par sau impar.
- assertTrue (BooleanSupplier booleanSupplier, mesaj String): această metodă ia o interfață funcțională BooleanSupplier sub forma unei expresii lambda. De asemenea, este nevoie de un șir de mesaj pentru a se imprima dacă BooleanSupier nu este adevărat.
- assertTrue (BooleanSupplier booleanSupplier, Furnizor
messageSupplier): această metodă necesită o interfață funcțională BooleanSupplier pentru a afirma. De asemenea, este nevoie de o interfață funcțională a furnizorului, care este o expresie lambda care va tipări o valoare șir dacă testul eșuează.
Metoda assertFalse
Metoda assertFalse() este opusul metodei assertTrue(). Această metodă evaluează o anumită condiție pentru a vedea dacă este falsă. Dacă o anumită condiție este adevărată, atunci testul assertFalse() va eșua. Metoda assertFalse() are, de asemenea, șase variante care acceptă aceleași argumente ca și omologii lor assertTrue().
@Test
goltestNotEvenNumbers(){
int num1 = 11;
int num2 = 17;
int num3 = 27;
assertFalse (num2 < num1);
assertFalse (num2 > num3, " Starea ta nu este falsă.");
assertFalse (num3 < num1, () ->" Starea ta nu este falsă.");
assertFalse(() -> num1%2 == 0);
assertFalse(() -> num2%2 == 0, "Valoarea ta este un număr par.");
assertFalse(() -> num3%2 == 0, () ->"Valoarea ta este un număr par.");
}
Cele șase metode assertFalse() din metoda testNotEvenNumbers() au toate ca rezultat false, ceea ce înseamnă că testele assertFalse() au succes.
Beneficiile testării unitare
Testarea unitară este o parte integrantă a procesului de dezvoltare software. Proiectele software mari eșuează din diverse motive, de la echipele care lucrează la ele până la abordări de dezvoltare.
Scopul testării unitare este de a elimina defecțiunile software prin furnizarea de detectare timpurie a erorilor. Acest lucru necesită ca echipele să dezvolte specificații clare, să îmbunătățească proiectarea software-ului prin documentarea erorilor și să ofere suport pentru întreținerea software-ului.
Testarea unitară nu este singura abordare de testare a software-ului pe care ar trebui să o utilizați în ciclul de viață al dezvoltării, este doar un loc foarte bun de început.