Mục lục nội dung
JUnit là gì
JUnit là gì?¶
JUnit là một framework dùng để unit test cho ngôn từ lập trình Java. ( Một unit ở đây hoàn toàn có thể là một hàm, phép tính, một module, một class — thường thì người ta sẽ sử dụng method để làm unit test )
JUnit là một mã nguồn mở, không tính tiền ( Ở bài này mình sẽ trình làng về JUnit 4, còn về JUnit 5 thì chính sách, cấu trúc của nó khác trọn vẹn so với những bản trước đó )
Ví dụ JUnit với Eclipse +Maven¶
Tạo maven project
Bạn đang đọc: JUnit là gì – My Notes
(Maven Project sẽ tự tạo source folder để viết code src/main/java
và folder để viết test src/test/java
)
Để sử dụng thư viện JUnit ta khai báo
junit
junit
4.12
test
Mục tiêu của JUnit là kiểm tra hiệu quả của 1 unit có trả về tác dụng giống như mong ước hay không .
Code nguồn¶
Ví dụ: Ở đây mình có method isPrimeNumber
để kiểm tra một số có phải là số nguyên tố hay không
( Số nguyên tố là số tự nhiên chỉ có hai ước số dương phân biệt là 1 và chính nó. ( Số 1 chỉ có một ước số dương là chính nó nên nó không phải là số nguyên tố ) )
public class Demo { public boolean isPrimeNumber(int input) { for (int i = 2; i < input; i+ + ) { if (input % i = = 0) return false; } return true; } }
Bây giờ ta sẽ sử dụng JUnit để kiểm tra hàm trên với những nguồn vào khác nhau :
Code Test¶
Ở đây mình có 6 test case tương ứng với 6 method
public class TestDemo { @ Test public void testIsPrimeNumber1( ) { Demo demo1 = new Demo( ) ; boolean result = demo1.isPrimeNumber( -1) ; assertFalse(result) ; } @ Test public void testIsPrimeNumber2( ) { Demo demo1 = new Demo( ) ; boolean result = demo1.isPrimeNumber(0) ; assertFalse(result) ; } @ Test public void testIsPrimeNumber3( ) { Demo demo1 = new Demo( ) ; boolean result = demo1.isPrimeNumber(1) ; assertFalse(result) ; } @ Testpublic
void testIsPrimeNumber4( ) { Demo demo1 = new Demo( ) ; boolean result = demo1.isPrimeNumber(2) ; assertTrue(result) ; } @ Test public void testIsPrimeNumber5( ) { Demo demo1 = new Demo( ) ; boolean result = demo1.isPrimeNumber(4) ; assertFalse(result) ; } @ Test public void testIsPrimeNumber6( ) { Demo demo1 = new Demo( ) ; boolean result = demo1.isPrimeNumber(5) ; assertTrue(result) ; } }
- Hàm thứ nhất đầu vào là số âm '-1' nên kết quả mong đợi sẽ là false nên mình dùng
assertFalse
- Hàm thứ hai đầu vào là số 0, 0 không phải là số nguyên tố nên kết quả mong đợi sẽ là false
- Hàm thứ ba đầu vào là số 1, 1 không phải là số nguyên tố nên kết quả mong đợi sẽ là false
- Hàm thứ tư đầu vào là số '2', 2 là số nguyên tố nên kết quả mong đợi sẽ là true nên mình dùng
assertTrue
- Hàm thứ năm đầu vào là số '4', 4 không phải là số nguyên tố nên kết quả mong đợi sẽ là false
- Hàm thứ sáu đầu vào là số '5', 5 là số nguyên tố nên kết quả mong đợi sẽ là true
Chạy những test case trên ( Chuột phải vào class TestDemo. java và chọn Run As JUnit )
Kết quả : ( Ở đây mình chạy trên eclipse )
Chạy hết 6 test case trên hết 0.029 giây, thanh trạng thái màu đỏ tức là có test case không pass ( 3 test case thất bại ) .
Như bạn thấy trên hình 3 test case đầu tiên bị thất bại tức là method isPrimeNumber
đang bị sai cho những trường hợp đó (do mình quên chưa kiểm tra trường hợp bằng 0 và 1 và nhỏ hơn không)
Bây giờ sửa lại method isPrimeNumber
để fix các lỗi đó:
public class Demo { public boolean isPrimeNumber(int input) { if (input < 2) { return false; } for (int i = 2; i < input; i+ + ) { if (input % i = = 0) return false; } return true; } }
Chạy lại những test case :
JUnit là gì? Ví dụ JUnit với Eclipse +Maven¶
Tất cả những test case đều pass, thanh trạng thái chuyển màu xanh .
Các bạn hoàn toàn có thể thấy những test case của JUnit không cần phải sửa gì cả, và nó cũng không cần chăm sóc những method cần kiểm tra thực thi gì mà chỉ cần chăm sóc nguồn vào và đầu ra .
(Khi các bạn đi thi thì kết quả đầu ra của các bạn cũng sẽ kiểm tra bằng một bộ các test case và tự động chạy như thế)
JUnit là gì? Ví dụ JUnit với Eclipse +Maven¶
Okay, Done ! \ Phần tiếp theo mình sẽ hướng dẫn những bạn thực thi unit với JUnit cho những trường hợp phức tạp hơn, và lý giải những annotation của JUnit
References :
https://github.com/junit-team/junit4/wiki
Source: https://blogchiase247.net
Category: Hỏi Đáp