JUnit là một Framework kiểm thử hồi quy được sử dụng bởi các nhà phát triển để thực hiện kiểm thử đơn vị trong Java và tăng tốc độ lập trình và tăng chất lượng code.
Các tính năng của JUnit Test Framework
JUnit Test Framework cung cấp các tính năng quan trọng sau đây:
- Fixture
- Test Suite
- Test Runner
- Các lớp JUnit
Fixture
Fixture là một trạng thái cố định của một tập các đối tượng được sử dụng cho một phiên bản baseline cho việc chạy các test. Mục đích của cố định kiểm thử là để đảm bảo rằng có một môi trường cố định trong đó các kiểm thử được thực hiện sao cho kết quả có thể lặp lại. Nó bao gồm:
- setUp(), phương thức này được thực thi trước phương thức khi kiểm thử.
- teardown(), phương thức này được thực thi sau phương thức kiểm thử.
Ví dụ:
import junit.framework.TestCase; public class JavaTest extends TestCase { protected int value1; protected int value2; /** * Khởi tạo các giá trị */ protected void setUp() { value1 = 3; value2 = 3; } /** * test Add method */ public void testAdd() { double result = value1 + value2; assertTrue(result == 6); } }
Test Suite
Test Suite được sử dụng để nhóm nhiều kiểm thử đơn vị và chạy chúng với nhau. Trong JUnit, ghi chú @RunWith và @Suite được sử dụng để chạy một bộ các kiểm thử.
Dưới đây là ví dụ test suite cho các lớp kiểm thử TestJunit1 và TestJunit2.
File: JunitTestSuite.java
package vn.viettuts.testsuite; 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 { }
File: TestJunit1.java
package vn.viettuts.testsuite; import static org.junit.Assert.assertEquals; import org.junit.Test; import vn.viettuts.Operation; public class TestJunit1 { @Test public void testAdd() { Operation myUnit = new Operation(); int result = myUnit.add(2, 3); assertEquals(result, 5); } }
File: TestJunit2.java
package vn.viettuts.testsuite; import static org.junit.Assert.assertEquals; import org.junit.Test; import vn.viettuts.Operation; public class TestJunit2 { @Test public void testSubtract() { Operation myUnit = new Operation(); int result = myUnit.subtract(6, 4); assertEquals(result, 2); } }
Test runner
Test runner được sử dụng để thực hiện các trường hợp kiểm thử. Dưới đây là một ví dụ:
File: TestRunner.java
package vn.viettuts; 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(TestOperation.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
File: TestOperation.java
package vn.viettuts; import static org.junit.Assert.assertEquals; import org.junit.Test; public class TestOperation { @Test public void testAdd() { Operation myUnit = new Operation(); int result = myUnit.add(2, 3); assertEquals(result, 5); } @Test public void testSubtract() { Operation myUnit = new Operation(); int result = myUnit.subtract(6, 4); assertEquals(result, 2); } }
Các lớp JUnit
Các lớp JUnit là các lớp quan trọng, được sử dụng để viết và kiểm thử JUnit. Một số các lớp quan trọng là:
- Assert - Chứa một tập hợp các phương thức assert .
- TestCase - Chứa một trường hợp kiểm thử mà định nghĩa các đối tượng cố định để thực hiện sao cho kết quả có thể lặp lại.
- TestResult - Bao gồm các phương thức để thu thập các kết quả của việc thực hiện một trường hợp kiểm thử.