JUnit - Teste de Tempo

JUnit fornece uma opção útil de Timeout. Se um caso de teste levar mais tempo do que o número especificado de milissegundos, o JUnit o marcará automaticamente como falha. otimeoutparâmetro é usado junto com a anotação @Test. Vamos ver o @Test (tempo limite) em ação.

Criar uma aula

Crie uma classe java a ser testada, digamos, MessageUtil.java em C: \> JUNIT_WORKSPACE.

Adicione um loop while infinito dentro do método printMessage ().

/*
* 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 void printMessage(){
      System.out.println(message);
      while(true);
   }   

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

Criar classe de caso de teste

Crie uma classe de teste java, digamos, TestJunit.java. Adicione um tempo limite de 1000 ao caso de teste testPrintMessage ().

Crie um arquivo de classe java chamado TestJunit.java em 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);
   
   @Test(timeout = 1000)
   public void testPrintMessage() {	
      System.out.println("Inside testPrintMessage()");     
      messageUtil.printMessage();     
   }

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

Criar classe de executor de teste

Crie um arquivo de classe java chamado TestRunner.java em C: \> JUNIT_WORKSPACE para executar caso (s) de teste.

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

Compile as classes MessageUtil, Test case e Test Runner usando javac.

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

Agora execute o Test Runner, que executará os casos de teste definidos na classe Test Case fornecida.

C:\JUNIT_WORKSPACE>java TestRunner

Verifique a saída. O caso de teste testPrintMessage () marcará o teste de unidade com falha.

Inside testPrintMessage()
Robert
Inside testSalutationMessage()
Hi!Robert
testPrintMessage(TestJunit): test timed out after 1000 milliseconds
false