JUnit - Kiểm tra thời gian

JUnit cung cấp tùy chọn Timeout tiện dụng. Nếu một trường hợp thử nghiệm mất nhiều thời gian hơn số mili giây được chỉ định, thì JUnit sẽ tự động đánh dấu nó là không thành công. Cáctimeouttham số được sử dụng cùng với chú thích @Test. Hãy để chúng tôi xem @Test (thời gian chờ) đang hoạt động.

Tạo một lớp học

Tạo một lớp java để được kiểm tra, giả sử, MessageUtil.java trong C: \> JUNIT_WORKSPACE.

Thêm một vòng lặp while vô hạn bên trong phương thức 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;
   }   
}

Tạo lớp trường hợp thử nghiệm

Tạo một lớp kiểm tra java, giả sử, TestJunit.java. Thêm khoảng thời gian chờ là 1000 vào trường hợp thử nghiệm testPrintMessage ().

Tạo tệp lớp java có tên TestJunit.java trong 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());
   }
}

Tạo lớp chạy thử nghiệm

Tạo tệp lớp java có tên TestRunner.java trong C: \> JUNIT_WORKSPACE để thực thi (các) trường hợp thử nghiệm.

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

Biên dịch các lớp MessageUtil, Test case và Test Runner bằng javac.

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

Bây giờ chạy Test Runner, sẽ chạy các trường hợp thử nghiệm được xác định trong lớp Test Case được cung cấp.

C:\JUNIT_WORKSPACE>java TestRunner

Xác minh kết quả đầu ra. testPrintMessage () trường hợp kiểm thử sẽ đánh dấu kiểm thử đơn vị không thành công.

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