Java: Thời gian test
JUnit cung cấp tùy chọn Timeout tiện dụng. Nếu một test case 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. Tham số timeout được sử dụng cùng với annotation @Test. Chúng ta sẽ xem @Test(timeout) hoạt động ra sao nhé.
Tạo một lớp
Tạo một lớp java để test, chẳng hạn như 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 test case
Tạo một lớp test java, chẳng hạn như TestJunit.java. Thêm khoảng thời gian chờ là 1000 (ms) vào test case 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 test runner
Tạo file java có tên TestRunner.java trong C:\>JUNIT_WORKSPACE để thực thi (các) test case.
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, nó sẽ chạy các test case được xác định trong lớp Test Case đã cung cấp.
C:\JUNIT_WORKSPACE>java TestRunner
Xác minh kết quả đầu ra. Test case testPrintMessage() 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