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 é o 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:
- Se você quiser ignorar um método de teste, use @Ignore junto com a anotação @Test.
- 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.
Exemplo de teste Junit – 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:
- Criando uma classe de teste simples sem ignorar um teste.
- Ignore um método de teste usando a anotação @Ignore.
- Ignore um método de teste usando a anotação @Ignore com o motivo adequado.
- 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; } }
Exemplo de teste Junit.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 teste para executar JunitTestExample.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:
Imprimir declaração no console:
A mensagem Junit Hi está sendo impressa
Olá!Guru99
A mensagem Junit 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 testeJUnitMessage() de JunitTestExample.java
Exemplo de teste Junit.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:
Imprimir declaração no console:
A mensagem Junit Hi 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.
Exemplo de teste Junit.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:
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:
- Se você quiser ignorar um método de teste, use @Ignore junto com a anotação @Test.
- 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.