Java: Framework kiểm thử JUnit
JUnit là một Framework kiểm thử hồi quy được các nhà phát triển sử dụng để thực hiện kiểm thử đơn vị trong Java, đồng thời tăng tốc độ lập trình và tăng chất lượng code. JUnit Framework có thể được tích hợp dễ dàng với:
- Eclipse
- Ant
- Maven
Các tính năng của Framework kiểm thử JUnit
Framework kiểm thử JUnit cung cấp các tính năng quan trọng sau:
- Fixture
- Test suite
- Test runner
- Lớp JUnit
Fixture
Fixture là một trạng thái cố định của một tập hợp các đối tượng được sử dụng làm đường cơ sở để chạy các test. Mục đích của fixture test là đảm bảo rằng có một môi trường cố định và tốt trong đó các test được chạy để các kết quả có thể lặp lại. Nó bao gồm:
- Phương thức setUp(), chạy trước mọi lệnh gọi kiểm tra.
- Phương thức drawDown(), chạy sau mọi phương thức thử nghiệm.
Hãy xem ví dụ sau:
import junit.framework.*; public class JavaTest extends TestCase { protected int value1, value2; // gán các giá trị protected void setUp(){ value1 = 3; value2 = 3; } // phương thức kiểm thử để thêm 2 giá trị public void testAdd(){ double result = value1 + value2; assertTrue(result == 6); } }
Test suite
Test suite bao gồm một vài đơn vị test case và chạy chúng cùng nhau. Trong JUnit, cả chú thích (annotation) @RunWith và @Suite đều được sử dụng để chạy test. Dưới đây là một ví dụ sử dụng các lớp test TestJunit1 và TestJunit2.
import org.junit.runner.RunWith; import org.junit.runners.Suite; //JUnit Suite Test @RunWith(Suite.class) @Suite.SuiteClasses({ TestJunit1.class ,TestJunit2.class }) public class JunitTestSuite { }
import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestJunit1 { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message, messageUtil.printMessage()); } }
import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestJunit2 { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }
Test runner
Test runner được sử dụng để thực hiện các test case. Sau đây là một ví dụ trong đó giả sử rằng lớp test TestJunit đã tồn tại.
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()); } }
Lớp JUnit
Các lớp JUnit là các lớp quan trọng, được sử dụng để viết và test các JUnits. Một số lớp quan trọng bao gồm:
- Assert - Chứa một tập hợp các phương thức assert.
- TestCase - Chứa một test case để xác định fixture để chạy nhiều test.
- TestResult - Chứa các phương thức thu thập kết quả của việc thực thi một test case.