JUnit - Prueba de tiempo

JUnit proporciona una práctica opción de tiempo de espera. Si un caso de prueba lleva más tiempo que el número especificado de milisegundos, JUnit lo marcará automáticamente como fallido. lostimeoutEl parámetro se usa junto con la anotación @Test. Veamos el @Test (tiempo de espera) en acción.

Crear una clase

Cree una clase de Java para probar, digamos, MessageUtil.java en C: \> JUNIT_WORKSPACE.

Agrega un bucle while infinito dentro del 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;
   }   
}

Crear clase de caso de prueba

Cree una clase de prueba de Java, digamos, TestJunit.java. Agregue un tiempo de espera de 1000 al caso de prueba testPrintMessage ().

Cree un archivo de clase java llamado TestJunit.java en 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());
   }
}

Crear clase de corredor de pruebas

Cree un archivo de clase java llamado TestRunner.java en C: \> JUNIT_WORKSPACE para ejecutar caso (s) de prueba.

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 las clases MessageUtil, Test case y Test Runner usando javac.

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

Ahora ejecute Test Runner, que ejecutará los casos de prueba definidos en la clase Test Case proporcionada.

C:\JUNIT_WORKSPACE>java TestRunner

Verifique la salida. El caso de prueba testPrintMessage () marcará la prueba unitaria como fallida.

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