Trong bài viết này, tôi sẽ giới thiệu về plugin EclEmma, một công cụ để kiểm tra độ bao phủ của code Unit Testcase trong chương trình. EclEmma có thể đánh dấu những đoạn code nào mà testcase chưa đáp ứng được, tính tỷ lệ phần trăm độ bao phủ của testcase trên từng file, package, project. Từ đó chúng ta có thể đánh giá được chất lượng của Unit Testcase, cũng như dễ dàng bổ sung testcase cho những đoạn code còn thiếu.
Hướng dẫn download và cài đặt
Các bạn xem hướng dẫn ở bài viết Các plugin Eclipse thường dùng.
Hướng dẫn sử dụng plugin EclEmma
EclEmma hỗ trợ kiểm tra code JUnit Test, TestNG. Do đó, bạn cần tải thư viện JUnit hoặc TestNG, sau đó add vào project.
Download thư viện hỗ trợ code Unit Testcase
Bạn chỉ cần sử dụng JUnit hoặc TestNG trong project.
Download JUnit tại địa chỉ: https://mvnrepository.com/artifact/junit/junit/4.12
Download TestNG tại địa chỉ: https://mvnrepository.com/artifact/org.testng/testng/6.11
Lưu ý: Nếu bạn tạo project maven thì chỉ cần chép dependency vào file pom.xml và update lại project là xong.
Add thư viện vào project
Các bạn xem hướng dẫn ở bài viết Các thao tác thường sử dụng trong Eclipse.
Sử dụng EclEmma với JUnit
Ví dụ: chương trình tìm Ước chung lớn nhất và Bội chung nhỏ nhất như sau:
package com.gpcoder; public class EclEmmaSample { public static int ucln(int soThuNhat, int soThuHai) { if (soThuHai == 0) { return soThuNhat; } if (soThuNhat == 0) { return soThuHai; } if (soThuHai > soThuNhat) { return ucln(soThuNhat, soThuHai % soThuNhat); } return ucln(soThuHai, soThuNhat % soThuHai); } public static int bcnn(int soThuNhat, int soThuHai) { return (soThuNhat * soThuHai) / ucln(soThuNhat, soThuHai); } }
Bạn nhận được yêu cầu viết JUnit cho 2 hàm ucln và bcnn. Bạn viết như sau:
package com.gpcoder; import org.junit.Test; public class EclEmmaSample_Test { @Test public void testUcln() { EclEmmaSample.ucln(10, 5); } }
Sử dụng EclEmma để kiểm tra chất lượng viết JUnit: nhấn chuột phải lên project hoặc package hoặc class JUnit Test bất kỳ -> chọn Coverage As -> chọn JUnit (nếu bạn sử dụng thư viện TestNG thì bạn chọn TestNG).
Sau khi chạy EclEmma, ta được kết quả như sau:
EclEmmaSample_Test.java
EclEmmaSample.java
EclEmma sử dụng màu để đánh dấu kết quả bao phủ của code Unit Test.
- Màu đỏ: code JUnit chưa bao phủ (chưa kiểm tra) được dòng code này.
- Màu vàng: chưa bao phủ hết trường hợp. Như ví dụ trên: cần bổ sung test trường hợp soThuNhat = 0 và soThuHai > soThuNhat
- Màu xanh: đã được kiểm tra.
Xem kết quả báo cáo của EclEmma về độ bao phủ của code JUnit Test: thông thường sau khi chạy EclEmma, cửa sổ Coverage sẽ được mở. Nếu không thấy, bạn vào menu Window -> Show View -> Other… -> Coverage
EclEmma sẽ thống kê cho bạn tỷ lệ bao phủ code JUnit cho toàn bộ chương trình, từng package, từng file. Từ đây, bạn có thể kiểm soát được chất lượng của JUnit đối với dự án. Các bạn có thể tham khảo thêm các tính năng khác trên trang chủ của EclEmma.
Trên đây là những hướng dẫn cơ bản về plugin EclEmma. Hy vọng bài viết này giúp ích cho các bạn. Hẹn gặp lại ở các bài viết tiếp theo.