Java: API
Giải phóng thời gian, khai phóng năng lực
Gói quan trọng nhất trong JUnit là junit.framework, chứa tất cả các lớp lõi. Một số lớp quan trọng như sau:
Sr.No. | Tên lớp | Chức năng |
---|---|---|
1 | Assert | Một tập hợp các phương thức assert. |
2 | TestCase | Một test case sẽ xác định fixture để chạy nhiều thử nghiệm. |
3 | TestResult | TestResult thu thập kết quả của việc thực thi một test case. |
4 | TestSuite | TestSuite là một tổ hợp các test. |
Lớp Assert
Sau đây là phần khai báo cho lớp org.junit.Assert:
public class Assert extends java.lang.Object
Lớp này cung cấp một tập hợp các phương thức assert hữu ích cho việc viết các bài kiểm tra. Chỉ những xác nhận không thành công mới được ghi lại. Một số phương thức quan trọng của lớp Assert như sau:
Sr.No. | Phương thức & Mô tả |
---|---|
1 |
void assertEquals(boolean expected, boolean actual) Kiểm tra xem hai object hoặc hai giá trị nguyên thủy (primitive) có bằng nhau không. |
2 |
void assertFalse(boolean condition) Kiểm tra xem condition có false không. |
3 |
void assertNotNull(Object object) Kiểm tra xem object có không null không. |
4 |
void assertNull(Object object) Kiểm tra xem object có null không. |
5 |
void assertTrue(boolean condition) Kiểm tra xem condition có true không. |
6 |
void fail() Không kiểm tra được và không có thông báo. |
Bây giờ ta sẽ có một ví dụ ap dụng. Trước tiên ta tạo file java có tên TestJunit1.java trong C:\>JUNIT_WORKSPACE .
import org.junit.Test; import static org.junit.Assert.*; public class TestJunit1 { @Test public void testAdd() { //test data int num = 5; String temp = null; String str = "Junit is working fine"; //check for equality assertEquals("Junit is working fine", str); //check for false condition assertFalse(num > 6); //check for not null value assertNotNull(temp); } }
Tiếp theo, tạo file java có tên TestRunner1.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 TestRunner1 { public static void main(String[] args) { Result result = JUnitCore.runClasses(TestJunit1.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
Biên dịch các lớp test case và Test Runner bằng javac.
C:\JUNIT_WORKSPACE>javac TestJunit1.java TestRunner1.java
Bây giờ hãy chạy Test Runner, sẽ chạy trường hợp thử nghiệm được xác định trong lớp Test Case đã cung cấp.
C:\JUNIT_WORKSPACE>java TestRunner1
Xác minh kết quả đầu ra.
true
Lớp TestCase
Sau đây là phần khai báo cho lớp org.junit.TestCase:
public abstract class TestCase extends Assert implements Test
Mỗi test case sẽ xác định fixture để chạy nhiều thử nghiệm. Một số phương thức quan trọng của lớp TestCase như sau:
Sr.No. | Phương thức & Mô tả |
---|---|
1 |
int countTestCases() Đếm số lượng các test case được thực hiện khi thực thi phương thức run(TestResult result). |
2 |
TestResult createResult() Tạo một đối tượng TestResult mặc định. |
3 |
String getName() Lấy tên của TestCase. |
4 |
TestResult run() Đây là phương thức thuận tiện để chạy thử nghiệm này, thu thập kết quả với một đối tượng TestResult mặc định. |
5 |
void run(TestResult result) Chạy test case và thu thập kết quả trong TestResult. |
6 |
void setName(String name) Đặt tên cho TestCase. |
7 |
void setUp() Thiết lập fixture, chẳng hạn như mở kết nối mạng. |
8 |
void tearDown() Tách fixture, chẳng hạn như đóng kết nối mạng. |
9 |
String toString() Trả về chuỗi thông tin của test case. |
Dưới đây là ví dụ minh họa. Tạo file java có tên TestJunit2.java trong C:\>JUNIT_WORKSPACE.
import junit.framework.TestCase; import org.junit.Before; import org.junit.Test; public class TestJunit2 extends TestCase { protected double fValue1; protected double fValue2; @Before public void setUp() { fValue1 = 2.0; fValue2 = 3.0; } @Test public void testAdd() { //đếm số lượng test case System.out.println("No of Test Case = "+ this.countTestCases()); //test getName String name = this.getName(); System.out.println("Test Case Name = "+ name); //test setName this.setName("testNewAdd"); String newName = this.getName(); System.out.println("Updated Test Case Name = "+ newName); } //tearDown được dùng để đóng kết nối hoặc xóa các activity public void tearDown() { } }
Tiếp theo, tạo file java có tên TestRunner2.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 TestRunner2 { public static void main(String[] args) { Result result = JUnitCore.runClasses(TestJunit2.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
Biên dịch các lớp test case và Test Runner bằng javac.
C:\JUNIT_WORKSPACE>javac TestJunit2.java TestRunner2.java
Bây giờ hãy chạy Test Runner, nó sẽ chạy test case được xác định trong lớp Test Case đã cung cấp.
C:\JUNIT_WORKSPACE>java TestRunner2
Xác minh kết quả đầu ra.
No of Test Case = 1 Test Case Name = testAdd Updated Test Case Name = testNewAdd true
Lớp TestResult
Sau đây là phần khai báo cho lớp org.junit.TestResult:
public class TestResult extends Object
TestResult thu thập kết quả của việc thực thi một test case. Nó là một ví dụ của mẫu Collecting Parameter. Framework Test sẽ phân biệt giữa thất bại và lỗi. Thất bại được dự đoán trước và được kiểm tra bằng các xác nhận. Lỗi là những vấn đề không lường trước được như ArrayIndexOutOfBoundsException. Một số phương thức quan trọng của lớp TestResult như sau:
Sr.No. | Phương thức & Mô tả |
---|---|
1 |
void addError(Test test, Throwable t) Thêm một lỗi vào danh sách các lỗi. |
2 |
void addFailure (Test test, AssertionFailedError t) Thêm thất bại vào danh sách thất bại. |
3 |
void endTest(Test test) Thông báo kết quả rằng một test đã được hoàn thành. |
4 |
int errorCount() Nhận số lỗi được phát hiện. |
5 |
Enumeration<TestFailure> errors() Trả về một Enumeration cho các lỗi. |
6 |
int failCount() Nhận số lỗi được phát hiện. |
7 |
void run(TestCase test) Chạy TestCase. |
8 |
int runCount() Nhận số lần chạy thử nghiệm. |
9 |
void startTest(Test test) Thông báo kết quả rằng một test sẽ được bắt đầu. |
10 |
void stop() Đánh dấu rằng quá trình test sẽ dừng lại. |
Tạo file java có tên TestJunit3.java trong C:\>JUNIT_WORKSPACE.
import org.junit.Test; import junit.framework.AssertionFailedError; import junit.framework.TestResult; public class TestJunit3 extends TestResult { // add the error public synchronized void addError(Test test, Throwable t) { super.addError((junit.framework.Test) test, t); } // add the failure public synchronized void addFailure(Test test, AssertionFailedError t) { super.addFailure((junit.framework.Test) test, t); } @Test public void testAdd() { // add any test } // Đánh dấu rằng nên dừng test run. public synchronized void stop() { //stop the test here } }
Tiếp theo, tạo file java có tên TestRunner3.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 TestRunner3 { public static void main(String[] args) { Result result = JUnitCore.runClasses(TestJunit3.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
Biên dịch các lớp test case và Test Runner bằng javac.
C:\JUNIT_WORKSPACE>javac TestJunit3.java TestRunner3.java
Bây giờ hãy chạy Test Runner, nó sẽ chạy test case được xác định trong lớp Test Case đã cung cấp.
C:\JUNIT_WORKSPACE>java TestRunner3
Xác minh kết quả đầu ra.
true
Lớp TestSuite
Sau đây là khai báo cho lớp org.junit.TestSuite:
public class TestSuite extends Object implements Test
TestSuite là Tổng hợp (Composite) các test. Nó chạy một tập hợp (collection) các test case. Một số phương thức quan trọng của lớp TestSuite như sau:
Sr.No. | Phương thức & Mô tả |
---|---|
1 |
void addTest(Test test) Thêm một test vào bộ. |
2 |
void addTestSuite(Class<? expand TestCase> testClass) Thêm các test từ lớp đã cho vào bộ. |
3 |
int countTestCases() Đếm số lượng test case sẽ được chạy bởi test này. |
4 |
String getName() Trả về tên của bộ. |
5 |
void run(TestResult result) Chạy các test và thu thập kết quả của chúng trong một TestResult. |
6 |
void setName(String name) Đặt tên cho bộ. |
7 |
Test testAt(int index) Trả về test ở chỉ số đã cho. |
8 |
int testCount() Trả về số lượng test trong bộ này. |
9 |
static Test warning(String message) Trả về một test mà sẽ fail và ghi lại một thông báo cảnh báo. |
Tạo file java có tên JunitTestSuite.java trong C:\>JUNIT_WORKSPACE để tạo TestSuite.
import junit.framework.*; public class JunitTestSuite { public static void main(String[] a) { // add the test's in the suite TestSuite suite = new TestSuite(TestJunit1.class, TestJunit2.class, TestJunit3.class ); TestResult result = new TestResult(); suite.run(result); System.out.println("Number of test cases = " + result.runCount()); } }
Biên dịch các lớp TestSuite bằng javac.
C:\JUNIT_WORKSPACE>javac JunitTestSuite.java
Bây giờ hãy chạy TestSuite.
C:\JUNIT_WORKSPACE>java JunitTestSuite
Xác minh kết quả đầu ra.
No of Test Case = 1 Test Case Name = testAdd Updated Test Case Name = testNewAdd Number of test cases = 3
Giải phóng thời gian, khai phóng năng lực