Acest tutorial explică cum să ignorați cazurile de testare în JUnit cu exemple. Veți învăța să utilizați @Ignore în JUnit 4 & @Disabled Annotation în JUnit 5:
În tutorialul anterior, am reușit să înțelegem ce este API-ul numit Annotation, ce face și, de asemenea, am văzut exemple de bază despre cum să folosim adnotările ciclului de viață, prioritățile pe care le au atunci când un caz de testare este executat.
Să încercăm să punem în lumină situațiile în care noi nevoie de nu rulați sau sunt nu presupus pentru a rula toate cazurile de testare. Vom învăța să ignorăm cazurile de testare în JUnit.
JUnit Ignoră cazurile de testare
Ar putea exista anumite cazuri de testare care să nu fie rulate, deoarece acestea nu se referă la anumite modificări de cod sau codul pentru cazurile de testare poate fi încă în curs de dezvoltare, astfel încât evităm să le rulăm.
În astfel de cazuri, s-ar putea să avem nevoie să rulăm un set de cazuri de testare, sărind peste alte câteva. Deci, ce ne oferă JUnit 4, precum și JUnit 5, astfel încât să putem rula doar câteva cazuri de testare, ignorând sau dezactivând sau "sărind" câteva dintre cazurile de testare?
Din fericire, avem @Ignore pentru JUnit 4 pentru a sări peste un caz de testare, în timp ce @Disabled pentru JUnit 5 să facă același lucru.
JUnit 4 - Adnotarea @Ignore
- Adnotarea @Ignore din JUnit 4 poate fi aplicată pentru o metodă de testare, pentru a sări peste execuția acesteia. În acest caz, trebuie să utilizați @Ignore cu adnotarea @Test pentru o metodă de testare pe care doriți să o săriți.
- Adnotarea poate fi aplicată și clasei de testare, pentru a sări peste toate cazurile de testare din cadrul unei clase. În acest caz, trebuie să utilizați @Ignore la nivelul clasei.
Codul are nevoie ca pachetul org.junit.Ignore să fie importat pentru ca @Ignore să funcționeze. Să demonstrăm cum se poate sări peste o metodă de test într-un test JUnit 4. Vom modifica JUnitProgram.java pentru a sări peste prima metodă de testcase.
Fragmentul de cod este:
@Ignore @Test public void test_JUnit1() { System.out.println("Acesta este cazul test_JUnit1() din această clasă"); } @Test public void test_JUnit2() { System.out.println("Acesta este cazul test_JUnit2() din această clasă"); } @Test public void test_JUnit3() { System.out.println("Acesta este cazul test_JUnit3() din această clasă"); } @Test public void test_JUnit3() { System.out.println("Acesta este cazul test_JUnit3() din această clasă"); }
La execuția fișierului de clasă, testul_JUnit1() este sărit în timpul execuției. În plus, metoda adnotată cu @Ignore și toate celelalte metode de testare se execută conform așteptărilor.
Numărătoarea de execuție rezultată arată 3/3 cazuri de testare și 1 caz de testare a fost omis. Numărătoarea de execuție a arătat 3/3 deoarece chiar și cazul de testare omis a încercat să se execute.
Captura de ecran de mai jos din fereastra de consolă demonstrează același lucru.
@Ignore Annotation cu un parametru Reason
Există și o variație la adnotarea @Ignore. Adnotarea acceptă un singur argument cu o valoare de tip șir de caractere, care reprezintă motivul pentru care testul este omis.
Să demonstrăm această variație a adnotării @Ignore.
Fragmentul de cod este următorul:
@Ignore("cazul de test este în curs de dezvoltare") @Test public void test_JUnit1() { System.out.println("Acesta este cazul de test test test_JUnit1() din această clasă"); }
Fereastra de consolă afișează același rezultat ca și fără motivul transmis la adnotarea @Ignore.
Acum, să vedem cum pot fi dezactivate toate testele aparținând unei clase. Vom actualiza acum adnotarea @Ignore la nivel de clasă pentru JUnitProgram.java
Fragmentul de cod este cel prezentat mai jos:
import org.junit.AfterClass; @Ignore("cazul de test este în curs de dezvoltare") public class JUnitProgram { @BeforeClass public static void preClass() { System.out.println("Aceasta este metoda preClass() care se execută o singură dată înainte de clasă"); } @Before public void setUp() { System.out.println("_______________________________________________________\n"); System.out.println("Aceasta este metoda setUp() carese execută înainte de fiecare testcase"); } @Test public void test_JUnit1() { System.out.println("Acesta este testcase test_JUnit1() din această clasă"); }
După execuția fișierului de clasă, se execută consolă arată nimic, și Rulați numărătoare din fila JUnit arată 1 clasă a chiulit de la 1 clasă .
Mai jos este o captură de ecran a ferestrei de consolă:
JUnit 5 - Adnotarea @Disabled
Adnotarea @Disabled din JUnit 5 funcționează în mod similar cu adnotarea @Ignore din JUnit 4.
- Puteți dezactiva sau sări peste execuția unei metode de testare sau a unui grup de teste prin aplicarea adnotării la nivelul Test.
- Sau toate testele ar putea fi omise prin aplicarea adnotării @Disabled la nivelul clasei în loc să o aplicăm la nivelul metodei de testare.
La fel ca @Ignore, un motiv poate fi trecut pentru @Disabled pentru ca orice dezvoltator sau analist de afaceri să știe de ce a fost omis un anumit testcase. Parametrul rămâne opțional, la fel ca în cazul lui @Ignore.
( Notă: Vom evita să demonstrăm adnotarea @Disabled printr-un cod real pentru a evita repetiția, deoarece urmează exact modul în care urmează @Ignore în JUnit 4.)
Singura diferență pe care o veți observa în cazul @Ignore Vs @Disabled este că atunci când adnotarea este aplicată la nivel de clasă, post-execuție a fișierului de clasă JUnit, numărul de execuții în cazul lui JUnit 4 , arată că 1/1 clasă a fost sărită.
Prin urmare, a se furnizează numărul clasei care a fost sărită în timp ce în cazul JUnit 5 arată că 3/3 cazuri de testare sunt sărite, având în vedere că trei metode de testare au fost omise din totalul celor trei metode de testare din clasă.
Prin urmare, pe vizibilitatea numărului de cazuri de testare omise , JUnit 5 face o ușoară mai bine în comparație cu JUnit 4.
Concluzie
În acest tutorial, am învățat care sunt situațiile în care ar putea fi nevoie să sărim peste executarea câtorva cazuri de test. De asemenea, am învățat cum să sărim peste anumite cazuri de test atât în JUnit 4, cât și în JUnit 5.