JUnit - Ignora test

A volte capita che il nostro codice non sia completamente pronto durante l'esecuzione di un test case. Di conseguenza, il test case fallisce. Il@Ignore l'annotazione aiuta in questo scenario.

  • Un metodo di test annotato con @Ignore non verrà eseguito.

  • Se una classe di test viene annotata con @Ignore, nessuno dei suoi metodi di test verrà eseguito.

Ora vediamo @Ignore in azione.

Crea una classe

Crea una classe java da testare, ad esempio, MessageUtil.java in C: \> JUNIT_WORKSPACE.

/*
* This class prints the given message on console.
*/

public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message){
      this.message = message; 
   }

   // prints the message
   public String printMessage(){
      System.out.println(message);
      return message;
   }   

   // add "Hi!" to the message
   public String salutationMessage(){
      message = "Hi!" + message;
      System.out.println(message);
      return message;
   }   
	
}

Crea classe test case

  • Crea una classe di test java, ad esempio TestJunit.java.

  • Aggiungi un metodo di test testPrintMessage () o testSalutationMessage () alla classe di test.

  • Aggiungi un Annotaion @Ignore al metodo testPrintMessage ().

Crea un file di classe java denominato TestJunit.java in C: \ JUNIT_WORKSPACE.

import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestJunit {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
   
   @Ignore
   @Test
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = "Robert";
      assertEquals(message,messageUtil.printMessage());
   }

   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
	
}

Crea classe Test Runner

Crea un file di classe java denominato TestRunner.java in C: \> JUNIT_WORKSPACE per eseguire i casi di test.

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(TestJunit.class);

      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}

Compilare le classi MessageUtil, Test case e Test Runner utilizzando javac.

C:\JUNIT_WORKSPACE>javac MessageUtil.java TestJunit.java TestRunner.java

Ora esegui Test Runner, che non eseguirà il test case testPrintMessage () definito nella classe Test Case fornita.

C:\JUNIT_WORKSPACE>java TestRunner

Verifica l'output. Il test case testPrintMessage () non è stato testato.

Inside testSalutationMessage()
Hi!Robert
true

Ora aggiorna TestJunit in C: \> JUNIT_WORKSPACE per ignorare tutti i casi di test. Aggiungi @Ignore a livello di classe.

import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

@Ignore
public class TestJunit {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
     
   @Test
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = "Robert";
      assertEquals(message,messageUtil.printMessage());
   }

   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
	
}

Compila il test case usando javac.

C:\JUNIT_WORKSPACE>javac TestJunit.java

Mantieni invariato il tuo Test Runner come segue:

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

Ora esegui Test Runner, che non eseguirà alcun test case definito nella classe Test Case fornita.

C:\JUNIT_WORKSPACE>java TestRunner

Verifica l'output. Nessun caso di test viene testato.

true