JUnit ignorerar testfall: JUnit 4 @Ignore Vs JUnit 5 @Disabled

Den här handledningen förklarar hur man ignorerar testfall i JUnit med exempel. Du lär dig att använda @Ignore i JUnit 4 & @Disabled Annotation i JUnit 5:

I den föregående handledningen fick vi veta vad API:et Annotation är, vad det gör och vi fick också se grundläggande exempel på hur man använder livscykelannotationer, vilka prioriteringar de har när ett testfall utförs.

Låt oss försöka belysa de situationer då vi behöver inte köra eller är inte Förmodligen för att köra alla testfall. Vi kommer att lära oss att ignorera testfall i JUnit.

JUnit ignorerar testfall

Det kan finnas vissa testfall som inte får köras eftersom de kanske inte är kopplade till vissa kodändringar eller eftersom koden för testfallen fortfarande är under utveckling, så vi undviker att köra dem.

I sådana fall kan vi behöva köra en uppsättning testfall genom att hoppa över några andra. Så vad är det som JUnit 4, liksom JUnit 5, ger oss för att vi ska kunna köra bara några få testfall och ignorera eller inaktivera, eller kalla det "hoppa över" några av testfallen?

Lyckligtvis har vi @Ignorera för JUnit 4 för att hoppa över ett testfall medan @Disabled för JUnit 5 att göra detsamma.

JUnit 4 - Annotationen @Ignore

  • Annotationen @Ignore i JUnit 4 kan användas för en testmetod för att hoppa över utförandet av den. I det här fallet måste du använda @Ignore tillsammans med @Test-annotationen för en testmetod som du vill hoppa över.
  • Annotationen kan också tillämpas på testklassen för att hoppa över alla testfall under en klass. I det här fallet måste du använda @Ignore på klassnivå.

Koden kräver att paketet org.junit.Ignore importeras för att @Ignore ska fungera. Låt oss demonstrera hur man hoppar över en testmetod i ett JUnit 4-test. Vi ska ändra JUnitProgram.java för att hoppa över den första testmetoden.

Kodutdraget är:

 @Ignore @Test public void test_JUnit1() { System.out.println("Detta är testfallet test_JUnit1() i den här klassen"); } @Test public void test_JUnit2() { System.out.println("Detta är testfallet test_JUnit2() i den här klassen"); } @Test public void test_JUnit3() { System.out.println("Detta är testfallet test_JUnit3() i den här klassen"); } 

När klassfilen exekveras hoppar test_JUnit1() över under exekveringen. Dessutom körs den metod som är annoterad med @Ignore och alla andra testmetoder som förväntat.

Det resulterande antalet körningar visar 3/3 testfall och 1 testfall har hoppats över. Körningsräkningen visade 3/3 eftersom även det hoppade testfallet försökte köras.

Nedanstående skärmdump av konsolfönstret visar samma sak.

@Ignore Annotation med en parameter för anledning

Det finns också en variant av @Ignore-annotationen. Annotationen tar emot ett enda argument med ett strängvärde som är orsaken till att testet inte genomförs.

Låt oss demonstrera denna variant av @Ignore-annotationen.

Kodutdraget är följande:

 @Ignore("testfallet är under utveckling") @Test public void test_JUnit1() { System.out.println("Detta är testfallet test_JUnit1() i den här klassen"); } 

Konsolfönstret visar samma resultat som det var utan orsaken i @Ignore-annotationen.

Låt oss nu se hur alla tester som tillhör en klass kan inaktiveras. Vi ska nu uppdatera @Ignore-annotationen på klassnivå för JUnitProgram.java.

Kodutdraget visas nedan:

 import org.junit.AfterClass; @Ignore("testfallet är under utveckling") public class JUnitProgram { @BeforeClass public static void preClass() { System.out.println("Det här är preClass()-metoden som körs en gång före klassen"); } @Before public void setUp() { System.out.println("_______________________________________________________\n"); System.out.println("Det här är setUp()-metoden somkörs före varje testfall"); } @Test public void test_JUnit1() { System.out.println("Detta är testfallet test_JUnit1() i den här klassen"); } 

Efter exekvering av klassfilen kommer konsol visar ingenting, och Kör räkna under fliken JUnit visar 1 klass hoppade över från 1 klass .

Nedan visas en skärmdump av konsolfönstret:

JUnit 5 - Annotation @Disabled

Annotationen @Disabled i JUnit 5 fungerar på samma sätt som annotationen @Ignore i JUnit 4.

  • Du kan inaktivera eller hoppa över utförandet av en testmetod eller en grupp test genom att tillämpa anteckningen på testnivå.
  • Eller så kan man hoppa över alla tester genom att tillämpa @Disabled-annotationen på klassnivå i stället för att tillämpa den på testmetodnivå.

Precis som @Ignore kan en orsak också skickas för @Disabled så att utvecklare eller affärsanalytiker kan få veta varför ett specifikt testfall hoppades över. Parametern är valfri precis som i fallet med @Ignore.

( Observera: Vi kommer att undvika att demonstrera @Disabled-annotationen med hjälp av en riktig kod för att undvika upprepningar, eftersom den följer exakt samma mönster som @Ignore i JUnit 4.)

Den enda skillnad som ni kommer att observera när det gäller @Ignorera mot @Disabled är att när annotationen tillämpas på klassnivå, efter att JUnit-klassfilen har utförts, så kommer antalet körningar i fallet med JUnit 4 , visar att 1/1 klass har hoppats över.

Därför är en antalet klasser som hoppar över anges. medan det i fallet med JUnit 5 visar att 3/3 testfall har hoppats över med tanke på att Tre testmetoder har överhoppats. av de totalt tre testmetoderna i klassen.

På följande sätt kan man på synlighet för antalet överhoppade testfall , JUnit 5 gör en liten skillnad bättre jobb jämfört med JUnit 4.

Slutsats

I den här handledningen lärde vi oss vilka situationer vi kan behöva hoppa över utförandet av några testfall. Vi lärde oss också hur man hoppar över vissa testfall både i JUnit 4 och JUnit 5.

Scrolla till toppen