JUnit Tutorial Adnotări cu Exemplu: Ce este @Test și @After
Ce Este JUnit Adnotări?
JUnit Adnotări este o formă specială de metadate sintactice care poate fi adăugată Java cod sursă pentru o mai bună lizibilitate și structură a codului. Variabilele, parametrii, pachetele, metodele și clasele pot fi adnotate. Adnotările au fost introduse în Junit4, ceea ce face Java cod mai ușor de citit și mai simplu. Aceasta este marea diferență dintre Junit3 și Junit4 că Junit4 se bazează pe adnotări.
Cu cunoștințele despre adnotări în Junit5, se poate învăța și implementa cu ușurință a JUnit Test. Mai jos este cel important și folosit frecvent JUnit lista de adnotări:
S.No. | Adnotări | Descriere |
---|---|---|
1. | @Test | Această adnotare este o înlocuire a lui org.junit.TestCase care indică faptul că metoda public void la care este atașată poate fi executată ca un caz de testare. |
2. | @Inainte de | Această adnotare este folosită dacă doriți să executați o instrucțiune, cum ar fi precondiții înainte de fiecare caz de testare. |
3. | @Înainte de curs | Această adnotare este folosită dacă doriți să executați unele instrucțiuni înainte ca toate cazurile de testare, de exemplu, conexiunea de test să fie executate înaintea tuturor cazurilor de testare. |
4. | @După | Această adnotare poate fi folosită dacă doriți să executați câteva instrucțiuni după fiecare Caz de testare de exemplu, resetarea variabilelor, ștergerea fișierelor temporare, variabilelor etc. |
5. | @După clasa | Această adnotare poate fi folosită dacă doriți să executați unele instrucțiuni după toate cazurile de testare, de exemplu, Eliberarea resurselor după executarea tuturor cazurilor de testare. |
6. | @Ignoră | Această adnotare poate fi folosită dacă doriți să ignorați unele instrucțiuni în timpul execuției testului, de exemplu, dezactivarea unor cazuri de test în timpul execuției testului. |
7. | @Test(timeout=500) | Această adnotare poate fi utilizată dacă doriți să setați un interval de timp în timpul execuției testului, de exemplu dacă lucrați în baza unui SLA (acord de nivel de serviciu), iar testele trebuie finalizate într-un interval de timp specificat. |
8. | @Test(expected=IllegalArgumentException.class) | Această adnotare poate fi folosită dacă doriți să gestionați o excepție în timpul execuției testului. Pentru, de exemplu, dacă doriți să verificați dacă o anumită metodă aruncă o excepție specificată sau nu. |
JUnit Exemplu de adnotări
Să creăm o clasă care acoperă important JUnit adnotări cu instrucțiuni simple de tipărire și executați-o cu o clasă test runner:
Pas 1) Luați în considerare mai jos clasa java care are diverse metode care sunt atașate adnotărilor enumerate mai sus:
JunitAdnotationsExample.java
package guru99.junit; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.util.ArrayList; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; public class JunitAnnotationsExample { private ArrayList<String> list; @BeforeClass public static void m1() { System.out.println("Using @BeforeClass , executed before all test cases "); } @Before public void m2() { list = new ArrayList<String>(); System.out.println("Using @Before annotations ,executed before each test cases "); } @AfterClass public static void m3() { System.out.println("Using @AfterClass ,executed after all test cases"); } @After public void m4() { list.clear(); System.out.println("Using @After ,executed after each test cases"); } @Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); } @Ignore public void m6() { System.out.println("Using @Ignore , this execution is ignored"); } @Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); } @Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); } }
Pas 2) haideți să creăm o clasă test runner pentru a executa testul de mai sus:
TestRunner.java
package guru99.junit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(JunitAnnotationsExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
rezultat asteptat
- Toate cazurile de testare vor fi executate unul câte unul, iar toate instrucțiunile de imprimare pot fi văzute pe o consolă.
- După cum sa discutat în tabelul de mai sus @Înainte de adnotare în JUnit, @BeforeClass [ metoda m1() și m2() ] vor fi executate înainte de fiecare și, respectiv, înainte de toate cazurile de testare.
- În același mod @After in JUnit, @afterClass (metoda m3() și m4()) vor fi executate după fiecare și, respectiv, după toate cazurile de testare. @ignore (metoda m6()) va fi tratată ca ignorând testul.
Să analizăm în detaliu cazurile de testare utilizate în clasa java de mai sus:
- Luați în considerare metoda m5() după cum este prezentată mai jos:
@Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); }
În metoda de mai sus, pe măsură ce adăugați un șir în variabila „listă”, deci
- list.isEmpty() va returna false.
- assertFalse(list.isEmpty()) trebuie să revină adevărat.
- Ca rezultat, cazul de testare va trece.
Deoarece ați adăugat un singur șir în listă, dimensiunea este una.
- list.size() trebuie să returneze valoarea int ca „1”.
- So assertEquals(1, list.size()) trebuie să revină adevărat.
- Ca rezultat, cazul de testare va trece.
- Luați în considerare metoda m7() după cum este prezentată mai jos:
@Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); }
După cum sa discutat mai sus @Test(timeout = 10)adnotarea este folosită pentru a impune timeout în cazul de testare.
- Luați în considerare metoda m8() după cum este prezentată mai jos:
@Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); }
După cum sa discutat mai sus @Test (așteptată) va verifica excepția specificată în timpul execuției sale, astfel încât metoda m8() va arunca „Nici o astfel de excepție de metodă”. Ca urmare, testul va fi executat cu o excepție.
Pe măsură ce toate cazurile de testare sunt trecute, acest lucru are ca rezultat o execuție cu succes a testului.
Rezultat actual
Deoarece există trei cazuri de testare în exemplul de mai sus, toate cazurile de testare vor fi executate unul câte unul. Vedeți rezultatul de mai jos:

Vedeți mai jos declarațiile tipărite care pot fi văzute pe consolă:
Folosind @BeforeClass , executat înainte de toate cazurile de testare
Folosind adnotări @Before, executate înainte de fiecare caz de testare
Folosind @After, executat după fiecare caz de testare
Folosind adnotări @Before, executate înainte de fiecare caz de testare
Folosind @Test(timeout), poate fi folosit pentru a impune timeout-ul în JUnit4 caz de testare
Folosind @After, executat după fiecare caz de testare
Folosind adnotări @Before, executate înainte de fiecare caz de testare
Folosind @Test(expected) , va verifica excepția specificată în timpul execuției sale
Folosind @After, executat după fiecare caz de testare
Folosind @AfterClass, executat după toate cazurile de testare
JUnit Clasa Assert
Această clasă oferă o mulțime de metode de aserție utile în scrierea unui caz de testare. Dacă toate declarațiile assert sunt trecute, rezultatele testului au succes. Dacă vreo declarație assert eșuează, rezultatele testului sunt eșuate.
După cum ați văzut mai devreme, tabelul de mai jos descrie metodele și descrierea importante pentru Assert:
S.No. | Metodă | Descriere |
---|---|---|
1. | void assertEquals (boolean așteptat, boolean actual) | Verifică dacă două valori sunt egale similare cu metoda equals din clasa Object |
2. | void assertFalse (condiție booleană) | funcționalitatea este de a verifica dacă o condiție este falsă. |
3. | void assertNotNull (obiect obiect) | Funcționalitatea „assertNotNull” este de a verifica dacă un obiect nu este nul. |
4. | void assertNull (Obiect obiect) | Funcționalitatea „assertNull” este de a verifica dacă un obiect este nul. |
5. | void assertTrue (condiție booleană) | Funcționalitatea „assertTrue” este de a verifica dacă o condiție este adevărată. |
6. | void fail() | Dacă doriți să aruncați orice eroare de afirmație, aveți fail() care duce întotdeauna la un verdict de eșec. |
7. | void assertSame([String message] | Funcționalitatea „assertSame” este de a verifica dacă cele două obiecte se referă la același obiect. |
8. | void assertNotSame([String message] | Funcționalitatea „assertNotSame” este de a verifica dacă cele două obiecte nu se referă la același obiect. |
JUnit Clasa de cazuri de testare
Pentru a rula teste multiple, clasa TestCase este disponibilă în org.junit.TestCase pachete. @Test adnotarea spune JUnit că această metodă public void (Caz de testare aici) la care este atașată poate fi rulată ca un caz de testare.
Tabelul de mai jos prezintă câteva metode importante disponibile în org.junit.TestCase clasă:
S.No. | Metodă | Descriere |
---|---|---|
1. | int countTestCases() | Această metodă este folosită pentru a număra numărul de cazuri de testare executate de run(TestResult tr) metodă. |
2. | TestResult createResult() | Această metodă este folosită pentru a crea un Rezultatul testului obiect. |
3. | String getName() | Această metodă returnează un șir care nu este altceva decât a TestCase. |
4. | TestResult run() | Această metodă este folosită pentru a executa un test care returnează a Rezultatul testului obiect |
5. | void run (rezultat TestResult) | Această metodă este utilizată pentru a executa un test având a Rezultatul testului obiect care nu returnează nimic. |
6. | void setName(nume șir) | Această metodă este folosită pentru a seta un nume pentru a TestCase. |
7. | void setUp() | Această metodă este folosită pentru a scrie codul de asociere a resurselor. de ex. Creați o conexiune la baza de date. |
8. | Vod TearDown() | Această metodă este folosită pentru a scrie codul de eliberare a resursei. de exemplu, eliberați conexiunea la baza de date după efectuarea operațiunii de tranzacție. |
JUnit Clasa TestResult
Când executați un test, acesta returnează un rezultat (sub formă de Rezultatul testului obiect). Acest obiect TestResult poate fi folosit pentru a analiza obiectul rezultat. Acest rezultat al testului poate fi eșec sau reușit.
Consultați tabelul de mai jos pentru metodele importante utilizate în clasa org.junit.TestResult:
S.No. | Metodă | Descriere |
---|---|---|
1. | void addError(Test test, Throwable t) | Această metodă este utilizată dacă doriți să adăugați o eroare la test. |
2. | void addFailure (Test de testare, AssertionFailedError t) | Această metodă este utilizată dacă doriți să adăugați un eșec la lista de eșecuri. |
3. | void endTest (test de testare) | Această metodă este utilizată pentru a notifica că se efectuează (terminat) un test |
4. | int errorCount() | Această metodă este utilizată pentru a obține eroarea detectată în timpul executării testului. |
5. | Enumerare erori() | Această metodă returnează pur și simplu o colecție (Enumerare aici) de erori. |
6. | int failureCount() | Această metodă este utilizată pentru a obține numărul de erori detectate în timpul executării testului. |
7. | void run (test TestCase) | Această metodă este utilizată pentru a executa un caz de testare. |
8. | int runCount() | Această metodă pur și simplu numără testul executat. |
9. | void startTest (test de testare) | Această metodă este utilizată pentru a notifica că a început un test. |
10. | void stop() | Această metodă este folosită pentru a testa rularea pentru a fi oprită. |
JUnit Clasa Test Suite
Dacă doriți să executați mai multe teste într-o ordine specificată, se poate face combinând toate testele într-un singur loc. Acest loc se numește suite de testare.
Consultați tabelul de mai jos pentru metodele importante utilizate în org.junit.TestSuite clasă:
S.No. | Metodă | Descriere |
---|---|---|
1. | void addTest (test de testare) | Această metodă este folosită dacă doriți să adăugați un test la suită. |
2. | void addTestSuite(Class testClass) | Această metodă este folosită dacă doriți să specificați clasa în timp ce adăugați un test la suită. |
3. | int countTestCases() | Această metodă este utilizată dacă doriți să numărați numărul de cazuri de testare. |
4. | String getName() | Această metodă este folosită pentru a obține numele suitei de testare. |
5. | void run (rezultat TestResult) | Această metodă este utilizată pentru a executa un test și pentru a colecta rezultatul testului Rezultatul testului obiect. |
6. | void setName(nume șir) | Această metodă este folosită pentru a seta numele TestSuite. |
7. | Testare testAt(index int) | Această metodă este folosită dacă doriți să returnați testul la indexul dat. |
8. | int testCount() | Această metodă este utilizată dacă doriți să returnați un număr de teste în Suite. |
9. | Avertisment de testare static (mesaj șir) | Această metodă returnează un test care va eșua și va înregistra un mesaj de avertizare. |
Rezumat
- JUnit oferă un API portabil, care oferă toate clasele importante și Selenium adnotări utile în redactarea unui test unitar.
- Clase care sunt foarte utile în timpul scrierii unui caz de testare
- org.junit.Assert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- Important și folosit frecvent JUnit lista de adnotări@Before@BeforeClass@After
@După clasa
@Test
@Ignora