JUnit - Tes Waktu

JUnit menyediakan opsi Timeout yang praktis. Jika kasus uji membutuhkan waktu lebih lama dari jumlah milidetik yang ditentukan, maka JUnit akan secara otomatis menandainya sebagai gagal. Itutimeoutparameter digunakan bersama dengan anotasi @Test. Mari kita lihat @Test (batas waktu) beraksi.

Buat Kelas

Buat kelas java untuk diuji, misalnya, MessageUtil.java di C: \> JUNIT_WORKSPACE.

Tambahkan loop sementara tak terbatas di dalam metode 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;
   }   
}

Buat Kelas Kasus Uji

Buat kelas pengujian java, misalnya, TestJunit.java. Tambahkan batas waktu 1000 untuk testPrintMessage () kasus uji.

Buat file kelas java bernama TestJunit.java di 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());
   }
}

Buat Kelas Test Runner

Buat file kelas java bernama TestRunner.java di C: \> JUNIT_WORKSPACE untuk menjalankan kasus uji.

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

Kompilasi class MessageUtil, Test case, dan Test Runner menggunakan javac.

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

Sekarang jalankan Test Runner, yang akan menjalankan kasus pengujian yang ditentukan di kelas Test Case yang disediakan.

C:\JUNIT_WORKSPACE>java TestRunner

Verifikasi hasilnya. testPrintMessage () test case akan menandai pengujian unit gagal.

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