JUnit @Negeer testannotatie met voorbeeld

โšก Slimme samenvatting

JUnit Met de annotatie 'Ignore Test Annotation' kunnen ontwikkelaars individuele testmethoden of hele klassen overslaan tijdens het bouwen van builds. De annotatie behandelt syntax, redenen en voorwaarden voor het overslaan van tests.pingen JUnit 5. Migratie van gehandicapten.

  • ???? Overslaan-methode: @Negeer bovenstaande @Test omzeilt het.
  • ๐Ÿ“ Reden: @Ignore(โ€œreasonโ€) toont context in rapporten.
  • ???? Les overslaan: @Ignore op een klasse zorgt ervoor dat elke methode wordt overgeslagen.
  • ๐Ÿงฉ Voorwaardelijk: Combineer met @Assume in JUnit 4.
  • ๐Ÿš€ JUnit 5: Gebruik de varianten @Disabled en EnabledOn.
  • ๐Ÿค– AI-triage: AI markeert automatisch verouderde, genegeerde tests.

JUnit @Negeer testannotatie

Soms is het mogelijk dat u een methode/code niet hoeft uit te voeren of Testgeval omdat de codering niet volledig is uitgevoerd. Voor die specifieke test JUnit biedt @Negeren annotatie om de test over te slaan.

Wat is JUnit @Negeer testannotatie

De testannotatie @Ignore wordt gebruikt om bepaalde tests of een groep tests te negeren om zo de build-fout over te slaan.

@Negeren annotatie kan in twee scenario's worden gebruikt, zoals hieronder weergegeven:

  1. Als u een testmethode wilt negeren, gebruikt u @Ignore samen met de annotatie @Test.
  2. Als u alle tests van de klasse wilt negeren, gebruikt u de annotatie @Ignore op klasseniveau.

U kunt de reden voor het uitschakelen van een test opgeven in de optionele parameter die wordt verstrekt door de annotatie @Ignore.

Het zal andere ontwikkelaars die aan hetzelfde stuk code werken, helpen te begrijpen โ€œwaarom een โ€‹โ€‹bepaalde test is uitgeschakeld?โ€ Wanneer het probleem van die specifieke test is opgelost, kunt u deze eenvoudig inschakelen door deze te verwijderen @Annotatie negeren.

Junit-testvoorbeeld โ€“ Negeren

Zoals besproken in de bovenstaande definitie, kunt u de annotatie @Ignore gebruiken om een โ€‹โ€‹test of groep van de test te negeren.

Laten we het begrijpen aan de hand van een eenvoudig voorbeeld en in de onderstaande scenario's:

  1. Een eenvoudige testklasse maken zonder een test te negeren.
  2. Negeer een testmethode met de annotatie @Ignore.
  3. Negeer een testmethode met de annotatie @Ignore met de juiste reden.
  4. Negeer alle testmethoden met de annotatie @Ignore.

Een eenvoudige testklasse maken zonder een test te negeren

Laten we een eenvoudig maken Java klasse die twee soorten berichten afdrukt.

  • De eerste methode drukt een eenvoudig bericht af en
  • De tweede methode drukt een "hallo" -bericht af

JUnitBericht.java

package guru99.junit;		

public class JUnitMessage {				

    private String message;					

    public JUnitMessage(String message) {					
        this.message = message;							
    }		
    		
public String printMessage(){		
    		
    System.out.println(message);					
    		
    return message;					
}    		
    		
public String printHiMessage(){		
    		
    message="Hi!"+ message;							
    		
    System.out.println(message);					
    		
    return message;					
}    		
    		
}		

JunitTestExample.java

Laten we een maken JUnit testklas om te testen JUnitBericht.java.

In deze JUnit testklas,

  • Eerste test, genaamd โ€œtestJUnitMessage()โ€ test de โ€œprintMessage()โ€-methode van bovenstaande klasse.
  • Op dezelfde manier is de tweede test, genaamd โ€œtestJUnitHiMessageโ€testsโ€testJUnitHiMessageโ€ van bovenstaande klasse.
package guru99.junit;		

import static org.junit.Assert.assertEquals;				

import org.junit.Test;		

public class JunitTestExample {				

    public String message = "Guru99";							

    JUnitMessage junitMessage = new JUnitMessage(message);							

    @Test		
    public void testJUnitMessage() {					

        System.out.println("Junit Message is printing");					
        assertEquals(message, junitMessage.printMessage());					

    }		

    @Test		
    public void testJUnitHiMessage() {					
        message="Hi!" +message;							
        System.out.println("Junit Hi Message is printing ");					
        assertEquals(message, junitMessage.printHiMessage());					

    }		
}		

TestRunner.java

Laten we een testrunner-klasse maken om JunitTestExample.java uit te voeren

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(JunitTestExample.class);				
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

Output:

Een eenvoudige testklasse creรซren zonder een test te negeren

Verklaring op console afdrukken:

Junit Hi Bericht wordt afgedrukt

Hi!Guru99

Junit Bericht wordt afgedrukt

Guru99

Negeer een testmethode met de annotatie @Ignore

Laten we een negeertest maken om een โ€‹โ€‹test in het bovenstaande voorbeeld uit te schakelen. Hiervoor moet je @Ignore gebruiken in de methode die je wilt overslaan.

Laten we het doen als testJUnitBericht() van JunitTestExample.java

JunitTestExample.java

package guru99.junit;		

import static org.junit.Assert.assertEquals;				

import org.junit.Ignore;		
import org.junit.Test;		

public class JunitTestExample {				

    public String message = "Guru99";							

    JUnitMessage junitMessage = new JUnitMessage(message);							

    @Ignore		
    @Test		
    public void testJUnitMessage() {					

        System.out.println("Junit Message is printing ");					
        assertEquals(message, junitMessage.printMessage());					

    }		

    @Test		
    public void testJUnitHiMessage() {					
        message="Hi!" +message;							
        System.out.println("Junit Hi Message is printing ");					
        assertEquals(message, junitMessage.printHiMessage());					

    }		
}

Output:

Laten we de uitvoer van het bovenstaande voorbeeld uitvoeren en verifiรซren.

Onderstaande uitvoer laat zien dat รฉรฉn test wordt overgeslagen (uitgeschakeld), zie zoals hieronder aangegeven:

Een eenvoudige testklasse creรซren zonder een test te negeren

Verklaring op console afdrukken:

Junit Hi Bericht wordt afgedrukt

Hi!Guru99

Met behulp van @ negeer annotatie met Voorwaarde

Laten we het voorbeeld nemen van hoe u een test negeert en de reden voor het negeren ervan definiรซren. Zoals hierboven besproken, heeft u, om een โ€‹โ€‹reden op te geven, รฉรฉn optionele parameter in de @Ignore-annotatie, waar u de redenverklaring kunt opgeven.

JunitTestExample.java

package guru99.junit;		

import static org.junit.Assert.assertEquals;				

import org.junit.Ignore;		
import org.junit.Test;		

public class JunitTestExample {				

    public String message = "Guru99";							

    JUnitMessage junitMessage = new JUnitMessage(message);							

    @Ignore("not yet ready , Please ignore.")					
    @Test		
    public void testJUnitMessage() {					

        System.out.println("Junit Message is printing ");					
        assertEquals(message, junitMessage.printMessage());					

    }		

    @Test		
    public void testJUnitHiMessage() {					
        message="Hi!" +message;							
        System.out.println("Junit Hi Message is printing ");					
        assertEquals(message, junitMessage.printHiMessage());					

    }		
}		

Output:

Hetzelfde als hierboven.

Negeer alle testmethoden met de annotatie @Ignore.

Zoals hierboven besproken, moet u, om alle tests in de klas te negeren, de annotatie @Ignore op klasniveau gebruiken.

Laten we het bovenstaande voorbeeld aanpassen om te begrijpen hoe u alle tests kunt negeren:

package guru99.junit;		

import static org.junit.Assert.assertEquals;				

import org.junit.Ignore;		
import org.junit.Test;		

@Ignore		
public class JunitTestExample {				

    public String message = "Guru99";							

    JUnitMessage junitMessage = new JUnitMessage(message);							

    @Test		
    public void testJUnitMessage() {					

        System.out.println("Junit Message is printing ");					
        assertEquals(message, junitMessage.printMessage());					

    }		

    @Test		
    public void testJUnitHiMessage() {					
        message="Hi!" +message;							
        System.out.println("Junit Hi Message is printing ");					
        assertEquals(message, junitMessage.printHiMessage());					

    }		
}		

Output:

Negeer testmethoden met @Ignore-annotatie

Verklaring op console afdrukken:

Omdat beide tests werden overgeslagen door @Ignore op klasseniveau te gebruiken, werd er geen verklaring op de console afgedrukt.

Veelgestelde vragen

Slaat een testmethode of -klasse over. Wordt in rapporten nog steeds als overgeslagen weergegeven.

Ja. AI analyseert de geschiedenis van mislukkingen om onbetrouwbare kandidaten te signaleren.

AI voegt @Ignore(โ€œreasonโ€) toe vanuit de commit-context.

@Disabled, plus @DisabledOnOs en @EnabledOnJre.

Ja. Aangegeven als overgeslagen, los van geslaagd of niet geslaagd.

@DisabledOnOs(OS.WINDOWS) in JUnit 5.

Ja. Ze bouwen schulden op; ze herzien elke release.

Ja. @Negeer de bovenstaande klassedeclaratie.

Vat dit bericht samen met: