Java: Bỏ qua test
Giải phóng thời gian, khai phóng năng lực
Đôi khi xảy ra tình huống là code của ta không hoàn toàn sẵn sàng trong khi chạy một test case. Kết quả là test case không thành công. Chú thích @Ignore hữu ích trong trường hợp này.
- Phương thức test được chú thích bằng @Ignore sẽ không được thực thi.
- Nếu một lớp test được chú thích bằng @Ignore, thì sẽ không có phương thức kiểm tra nào được thực thi.
Bây giờ, hãy xem @Ignore hoạt động thế nào.
Tạo một lớp
Tạo một lớp java để được kiểm tra, chẳng hạn như MessageUtil.java trong C:\>JUNIT_WORKSPACE.
/* * 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 String printMessage(){ System.out.println(message); return message; } // 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 một phương thức test testPrintMessage() hoặc testSalutationMessage() vào lớp test của bạn.
- Thêm annotaion @Ignore vào phương thức testPrintMessage().
Tạo file 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); @Ignore @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); message = "Robert"; assertEquals(message,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ờ hãy chạy Test Runner, nó sẽ không chạy test case testPrintMessage() đượ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() không được kiểm tra.
Inside testSalutationMessage() Hi!Robert true
Bây giờ, hãy cập nhật TestJunit trong C:\>JUNIT_WORKSPACE để bỏ qua tất cả các test case. Thêm @Ignore ở cấp độ lớp.
import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; @Ignore public class TestJunit { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); message = "Robert"; assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }
Biên dịch test case bằng javac:
C:\JUNIT_WORKSPACE>javac TestJunit.java
Giữ nguyên Test Runner của bạn như sau:
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()); } }
Bây giờ chạy Test Runner, nó sẽ không chạy bất kỳ test case nào đượ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. Không có trường hợp thử nghiệm nào được kiểm tra.
true
Giải phóng thời gian, khai phóng năng lực