JUnit là gì – My Notes

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

JUnit là gì? Ví dụ JUnit với Eclipse +Maven

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) ;
       }

       @ Test
       

public

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 )

JUnit là gì? Hướng dẫn viết unit test với JUnit

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

Rate this post