Bài tập Nhập môn công nghệ phần mềm - Tuần 11: Thực hành kiểm thử đơn vị với JUnit
Tạo mới class ParameterizedTest
Trong class này chúng ta sẽ sử dụng annotation @RunWith của junit để chỉ cho Junit
biết rằng test case này sẽ được chạy cùng với class nào. Cụ thể là @RunWith(value =
Parameterized.class) của chính Junit.
Chúng ta sẽ thêm cấu hình tham số thông qua phương thức khởi tạo của class
ParameterizedTest. Tham số sẽ là 1 array gồm 3 phần tử, tương ứng với number 1 (a),
number 2 (b) và tổng.
ines từ 18-22: chúng ta có phương thức khởi tạo của class ParameterizedTest. Trong
phương thức này chúng ta gán các giá trị tham số truyền vào (còn gọi là arguments) cho
các thuộc tính của class ParameterizedTest (có 3 thuộc tính tương ứng với 2 số hạng và
tổng của chúng).
Line 24: chúng ta sử dụng annotations @Parameters để định dạng dữ liệu của tham số,
thuộc tính name của annotation này là không bắt buộc, ở đây chúng ta để name là một
chuỗi biểu diễn chuỗi sẽ được in ra console khi từng đối tượng dữ liệu (lưu trong
collection) được test.
20 trang |
Chia sẻ: hachi492 | Ngày: 05/01/2022 | Lượt xem: 450 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài tập Nhập môn công nghệ phần mềm - Tuần 11: Thực hành kiểm thử đơn vị với JUnit, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
JUnit Test
Trang 1 / 20
Bài tập tuần 11
Thực hành kiểm thử đơn vị với JUnit
Mục tiêu
- Cài đặt Eclipse có tích hợp sẵn JUnit
- Thực hành với JUnit, tạo một test case đơn giản cho một đoạn chương trình
Phần I Bài tập step by step
Bài 1.1
Mục tiêu: Xác nhận lại việc cài đặt JUnit và Java đã thành công
STEP1: Mở Eclipse, Tạo mới project tên TestJUnit ==> Finish
JUnit Test
Trang 2 / 20
JUnit Test
Trang 3 / 20
STEP 2: Thêm thư viện Junit cho projec
Chuột phải vào project TestJUnit ==> Build Path ==> Add Library
JUnit Test
Trang 4 / 20
Chọn Junit sau đó chọn Junit 4 rồi Finish
JUnit Test
Trang 5 / 20
JUnit Test
Trang 6 / 20
STEP 3: Tạo mới class java tên TestJunit
Chuột phải vào thư mục src của project TestJUnit ==> Chọn New ==> Chọn Class
JUnit Test
Trang 7 / 20
Đặt tên class là TestJunit ==> Finish
Step 4: Trong class TestJunit.java, chúng ta sẽ setup một test case đơn giản
JUnit Test
Trang 8 / 20
Lưu ý việc thêm đủ các package của Junit và sử dụng annotation @Test của Junit trươc
method testSetup() của chúng ta. Annotation này sẽ thông báo cho Junit biết đây là một
unit test.
Step 5: Tạo mới class TestRunner để chạy test case đã tạo ở Step 4
Chuột phải vào thư mục src ==> New Class ==> Đặt tên class mới là TestRunner
Chọn public static void main (String[] args) để tự sinh sẵn hàm main() trong class này.
JUnit Test
Trang 9 / 20
Trong hàm main() của class này, chúng ta sẽ chạy test case có trong TestJunit.java
JUnit Test
Trang 10 / 20
Chúng ta sử dụng object Result để chứa tất cả các unit test có trong test case TestJunit.
Những test bị fail sẽ được lấy về từ hàm getFailures của class Result.
Step 6: Chạy chương trình review kết quả
Chuột phải vào project TestJUnit ==> Run As ==> Junit Test
JUnit Test
Trang 11 / 20
JUnit Test
Trang 12 / 20
Test case đã chạy thành công và không có failure.
Note: Project này cho phép chúng ta bước đầu làm quen với môi trường Java và Junit
tạo test unit để xác nhận việc cài đặt Java và Junit cũng như môi trường phát triển
Eclipse đã hoàn tất.
Bài 1.2
Mục tiêu: Thực hành viết nhiều hơn một test case cho class cần test
Step 1: Tạo mới project tên Utils
Step 2: Add Junit vào class path của project giống bài trước
Step 3: Tạo mới class trong thư mục src, đặt tên là StringUtils
JUnit Test
Trang 13 / 20
Trong class StringUtils, chúng ta tạo ra 2 phương thức: reserveWords(String str) để đảo
ngược word và countWords(String str) để đếm số từ trong chuỗi. Giả thiết rằng chuỗi
nhập vào các từ cách nhau bằng 1 dấu cách.
Step 4: Tạo test case cho class StringUtils
Trong thư mục src tạo mới class tên StringUtilsTest, trong class này chúng ta sẽ tạo ra
hai unit test tương ứng với hai hàm của class StringUtils.
JUnit Test
Trang 14 / 20
Step 5: Chạy test case
Chuột phải vào class StringUtilsTest ==> Chọn Run As ==> Chọn Junit Test
JUnit Test
Trang 15 / 20
Bài 1.3
Mục tiêu: Tham số hoá các test case để test cho nhiều trường hợp của dữ liệu
Trong JUnit, chúng ta có thể đưa tham số vào các unit test bằng 2 cách:
1. Thông qua phương thức khởi tạo (Constructor)
2. Sử dụng filed injection với annotation @Parameter
Step 1: Tạo mới project tên Parameterizing
Step 2: Add Junit vào class path của project
Step 3: Tạo mới class tên MathUtils
JUnit Test
Trang 16 / 20
Trong class MathUtils, tạo một phương thức static đơn giản trả về tổng của hai số
nguyên bất kì. Chúng ta sẽ sử dụng class này để tạo các test case với Junit.
Step 4: Parameterized với Junit thông qua phương thức khởi tạo Constructor
Tạo mới class ParameterizedTest
Trong class này chúng ta sẽ sử dụng annotation @RunWith của junit để chỉ cho Junit
biết rằng test case này sẽ được chạy cùng với class nào. Cụ thể là @RunWith(value =
Parameterized.class) của chính Junit.
Chúng ta sẽ thêm cấu hình tham số thông qua phương thức khởi tạo của class
ParameterizedTest. Tham số sẽ là 1 array gồm 3 phần tử, tương ứng với number 1 (a),
number 2 (b) và tổng.
JUnit Test
Trang 17 / 20
Lines từ 18-22: chúng ta có phương thức khởi tạo của class ParameterizedTest. Trong
phương thức này chúng ta gán các giá trị tham số truyền vào (còn gọi là arguments) cho
các thuộc tính của class ParameterizedTest (có 3 thuộc tính tương ứng với 2 số hạng và
tổng của chúng).
Line 24: chúng ta sử dụng annotations @Parameters để định dạng dữ liệu của tham số,
thuộc tính name của annotation này là không bắt buộc, ở đây chúng ta để name là một
JUnit Test
Trang 18 / 20
chuỗi biểu diễn chuỗi sẽ được in ra console khi từng đối tượng dữ liệu (lưu trong
collection) được test.
Step 5: Chạy test case review kết quả.
Chuột phải vào class ParameterizedTest ==> Chọn Run As ==> Chọn JUnit Test
Chúng ta sẽ quan sát thấy 5 test case với các đầu vào dữ liệu khác nhau được thực hiện.
Step 6: Sửa lại class ParameterizedTest để thực hiện tham số hoá test case theo cách
thứ 2 (Field Injection)
Chúng ta xoá đi phương thức khởi tạo của class này, thay vì thế sẽ sử dụng injection
@Parameter của Junit cho từng thuộc tính của class. Chú ý rằng các thuộc tính này phải
được chuyển từ private sang public.
JUnit Test
Trang 19 / 20
Chạy lại test case chúng ta thu được cùng kết quả như Step 5.
JUnit Test
Trang 20 / 20
Phần bài tập tự thực hành:
Thay vì sử dụng traditional style như trên, các bạn hãy sử dụng modern
style của junit (sử dụng assertThat và hàm is()).
HẾT
Các file đính kèm theo tài liệu này:
- bai_tap_nhap_mon_cong_nghe_phan_mem_tuan_11_thuc_hanh_kiem_t.pdf