JUnit negeren van testgevallen: JUnit 4 @Ignore Vs JUnit 5 @Disabled

Deze tutorial legt uit hoe u testgevallen in JUnit kunt negeren met voorbeelden. U leert @Ignore te gebruiken in JUnit 4 & @Disabled Annotation in JUnit 5:

In de vorige tutorial hebben we begrepen wat de API genaamd Annotation is, wat hij doet en we hebben ook basisvoorbeelden gezien van het gebruik van lifecycle annotations, de prioriteiten die ze hebben wanneer een testcase wordt uitgevoerd.

Laten we proberen licht te werpen op de situaties waarin we Ik heb nodig. niet rennen of zijn niet verondersteld om alle testgevallen uit te voeren. We zullen leren om testgevallen te negeren in JUnit.

JUnit negeert testgevallen

Er kunnen bepaalde testgevallen zijn die niet worden uitgevoerd, omdat zij misschien geen betrekking hebben op bepaalde codewijzigingen of omdat de code voor de testgevallen nog in ontwikkeling is, zodat wij die niet uitvoeren.

In dergelijke gevallen moeten we misschien een set testgevallen uitvoeren door een paar andere over te slaan. Dus, wat is het dat JUnit 4, evenals JUnit 5, ons biedt zodat we in staat zijn om slechts een paar testgevallen uit te voeren terwijl we een paar testgevallen negeren of uitschakelen of noem het 'overslaan'?

Gelukkig hebben we @Ignore annotatie voor JUnit 4 om een testcase over te slaan terwijl @Disabled annotatie voor JUnit 5 om hetzelfde te doen.

JUnit 4 - @Ignore Annotatie

  • De JUnit 4 @Ignore annotatie kan worden toegepast voor een testmethode, om de uitvoering ervan over te slaan. In dit geval moet je @Ignore gebruiken met de @Test annotatie voor een testmethode die je wilt overslaan.
  • De annotatie kan ook worden toegepast op de testklasse, om alle testgevallen onder een klasse over te slaan. In dat geval moet u @Ignore gebruiken op klasseniveau.

De code heeft het pakket org.junit.Ignore nodig om @Ignore te laten werken. Laten we eens demonstreren hoe je een testmethode in een JUnit 4 test kunt overslaan. We zullen JUnitProgram.java aanpassen om de eerste testmethode over te slaan.

Het code fragment is:

 @Ignore @Test public void test_JUnit1() { System.out.println("Dit is de testcase test_JUnit1() in deze klasse"); } @Test public void test_JUnit2() { System.out.println("Dit is de testcase test_JUnit2() in deze klasse"); } @Test public void test_JUnit3() { System.out.println("Dit is de testcase test_JUnit3() in deze klasse"); } 

Bij de uitvoering van het klassebestand wordt de test_JUnit1() tijdens de uitvoering overgeslagen. Bovendien worden de methode geannoteerd met @Ignore en alle andere testmethoden uitgevoerd zoals verwacht.

De resultante Run count toont 3/3 testcases en 1 testcase wordt overgeslagen. De run count toont 3/3 omdat zelfs de overgeslagen testcase probeerde uit te voeren.

Het onderstaande screenshot van het consolevenster bewijst hetzelfde.

@Ignore Annotatie met een Reden Parameter

Er is ook een variatie op de @Ignore annotatie. De annotatie neemt een enkel argument op met een stringwaarde die de reden is voor het overslaan van de test.

Laten we deze variatie van de @Ignore annotatie demonstreren.

Het codefragment ziet er als volgt uit:

 @Ignore("de testcase is in ontwikkeling") @Test public void test_JUnit1() { System.out.println("Dit is de testcase test_JUnit1() in deze klasse"); } 

Het consolevenster toont hetzelfde resultaat als zonder de reden die aan de @Ignore annotatie is doorgegeven.

Laten we nu eens kijken hoe alle tests die bij een klasse horen uitgeschakeld kunnen worden. We zullen nu de @Ignore annotatie op klassenniveau aanpassen voor JUnitProgram.java

Het codefragment is zoals hieronder getoond:

 import org.junit.AfterClass; @Ignore("de testcase is in ontwikkeling") public class JUnitProgram { @BeforeClass public static void preClass() { System.out.println("Dit is de preClass() methode die één keer voor de class wordt uitgevoerd"); } @Before public void setUp() { System.out.println("_______________________________________________________"); System.out.println("Dit is de setUp() methode diedraait voor elke testcase"); } @Test public test_JUnit1() { System.out.println("Dit is de testcase test_JUnit1() in deze klasse"); } 

Na uitvoering van het klassebestand wordt de console toont niets, en de Ren tel onder de JUnit tab toont 1 klas overgeslagen .

Hieronder staat een screenshot van het consolevenster:

JUnit 5 - @Disabled Annotatie

De @Disabled annotatie in JUnit 5 werkt hetzelfde als de @Ignore annotatie in JUnit 4.

  • U kunt de uitvoering van een testmethode of een groep tests uitschakelen of overslaan door de annotatie op testniveau toe te passen.
  • Of alle tests kunnen worden overgeslagen door @Disabled annotatie toe te passen op het niveau van de klasse in plaats van op het niveau van de testmethode.

Net als @Ignore kan ook voor @Disabled een reden worden opgegeven, zodat ontwikkelaars of bedrijfsanalisten weten waarom een bepaalde testcase is overgeslagen. De parameter blijft optioneel, net als bij @Ignore.

( Let op: We zullen de @Disabled annotatie niet demonstreren via een echte code om herhaling te voorkomen, aangezien het exact dezelfde manier volgt als @Ignore in JUnit 4).

Het enige verschil dat u zult opmerken in het geval van @Ignore Vs @Disabled is dat wanneer de annotatie wordt toegepast op klassenniveau, na uitvoering van het JUnit klassebestand, de Run count in het geval van JUnit 4 laat zien dat 1/1 klas is overgeslagen.

Dus een tellen van de klasse die wordt overgeslagen terwijl in het geval van JUnit 5 blijkt dat 3/3 testgevallen worden overgeslagen aangezien drie testmethoden werden overgeslagen van de in totaal drie testmethoden in de klasse.

Dus, op de zichtbaarheid van het aantal overgeslagen testgevallen , JUnit 5 doet een beetje beter in vergelijking met JUnit 4.

Conclusie

In deze tutorial hebben we geleerd wat de situaties zijn waarin we de uitvoering van enkele testgevallen moeten overslaan. We hebben ook geleerd hoe we bepaalde testgevallen zowel in JUnit 4 als in JUnit 5 kunnen overslaan.

Scroll naar boven