JUnit @Ignore anotação de teste com exemplo

Às vezes você pode precisar não executar um método/código ou Caso de teste porque a codificação não é feita totalmente. Para esse teste específico, JUnit fornece @Ignorar anotação para pular o teste.

O que é a JUnit @Ignorar anotação de teste

A anotação de teste @Ignore é usada para ignorar testes específicos ou grupos de testes, a fim de ignorar a falha de construção.

@Ignorar a anotação pode ser usada em dois cenários, conforme mostrado abaixo:

  1. Se você quiser ignorar um método de teste, use @Ignore junto com a anotação @Test.
  2. Se você quiser ignorar todos os testes da classe, use a anotação @Ignore no nível da classe.

Você pode fornecer o motivo para desabilitar um teste no parâmetro opcional fornecido pela anotação @Ignore.

Isso ajudará outros desenvolvedores que trabalham no mesmo trecho de código a entender “por que um teste específico está desabilitado?” Quando o problema desse teste específico for corrigido, você pode simplesmente habilitá-lo removendo @Ignorar anotação.

Junit Exemplo de teste – Ignorar

Conforme discutido na definição acima, você pode usar a anotação @Ignore para ignorar um teste ou grupo de testes.

Vamos entendê-lo usando um exemplo simples e nos cenários abaixo:

  1. Criando uma classe de teste simples sem ignorar um teste.
  2. Ignore um método de teste usando a anotação @Ignore.
  3. Ignore um método de teste usando a anotação @Ignore com o motivo adequado.
  4. Ignore todos os métodos de teste usando a anotação @Ignore.

Criando uma classe de teste simples sem ignorar um teste

Vamos criar um simples Java classe que imprime dois tipos de mensagem.

  • O primeiro método imprime uma mensagem simples e
  • O segundo método imprime uma mensagem “oi”

JUnitMensagem.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;					
}    		
    		
}		

JunitExemplo de teste.java

Vamos criar um JUnit classe de teste para testar JUnitMensagem.java.

Neste curso JUnit aula de teste,

  • O primeiro teste, denominado “testeJUnitMessage()” testa o método “printMessage()” da classe acima.
  • Da mesma forma, o segundo teste, denominado “testeJUnitHiMessage” testa “testeJUnitHiMessage” da classe acima.
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

Vamos criar uma classe executor de testes para executar JunitExemplo de teste.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(JunitTestExample.class);				
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

Saída:

Criando uma classe de teste simples sem ignorar um teste

Imprimir declaração no console:

Junit Olá, a mensagem está sendo impressa

Olá!Guru99

Junit A mensagem está sendo impressa

Guru99

Ignore um método de teste usando a anotação @Ignore

Vamos criar um teste de ignorar para desabilitar um teste no exemplo acima. Para isso, você precisa usar @Ignore no método que deseja pular.

Vamos fazer isso para testeJUnitMensagem() de JunitExemplo de teste.java

JunitExemplo de teste.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());					

    }		
}

Saída:

Vamos executar e verificar a saída do exemplo acima.

A saída abaixo mostra que um teste foi ignorado (desabilitado), veja conforme marcado abaixo:

Criando uma classe de teste simples sem ignorar um teste

Imprimir declaração no console:

Junit Olá, a mensagem está sendo impressa

Olá!Guru99

Usando a anotação @ignore com Condição

Vejamos o exemplo de como ignorar um teste e definir o motivo de ignorá-lo junto com ele. Conforme discutido acima, para fornecer um motivo, você tem um parâmetro opcional na anotação @Ignore, onde pode fornecer a declaração do motivo.

JunitExemplo de teste.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());					

    }		
}		

Saída:

O mesmo que acima.

Ignore todos os métodos de teste usando a anotação @Ignore.

Conforme discutido acima, para ignorar todos os testes da aula, você precisa usar a anotação @Ignore no nível da turma.

Vamos modificar o exemplo acima para entender como ignorar todos os testes:

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());					

    }		
}		

Saída:

Ignorar métodos de teste usando a anotação @Ignore

Imprimir declaração no console:

Como ambos os testes foram ignorados usando @Ignore no nível da classe, nenhuma instrução seria impressa no console.

Resumo

Neste tutorial, você aprendeu como ignorar um único teste, um grupo de testes ou todos os testes usando a anotação @Ignore.

@Ignorar a anotação pode ser usada em dois cenários, conforme mostrado abaixo:

  1. Se você quiser ignorar um método de teste, use @Ignore junto com a anotação @Test.
  2. Se você quiser ignorar todos os testes da classe, use a anotação @Ignore no nível da classe.

Você também aprendeu como fornecer uma declaração para que outro desenvolvedor entenda por que um determinado teste está desabilitado.