Spring Boot + JUnit 5
Hướng dẫn thực hiện UnitTest trong SpringBoot application
Dependency
- Thêm dependency trong pom.xml để thực hiện UnitTest
Trong Spring Boot version 2.2.6 đã có sẵn thư viện cho junit 5
Nếu không bạn có thể add thêm dependency như sau
Tạo class Test
-
Mỗi class cần thực hiện Unit Test với class test tên có post fix là “Test”
-
Thêm @ExtendWith(SpringExtension.class) (Thay cho @RunWith(SpringRunner.class) của Junit4) trên đầu mỗi class test
-
Lấy bean của class cần test bằng cách
- Thêm @Import([Class_cần_test].class) trên đầu class
- Sử dụng @Autowired để lấy bean class cần test
Ví dụ
Tạo method test
- Quy tắt đặt tên method test
method_StateUnderTest_ExpectedBehavior
Ví dụ: greet_HelloWorldWithId1_ReturnGreeting
- Nội dụng 1 method test bao gồm 3 thành phần
- Mock usecase
- Expected value
- Run method & assertions (Sử dụng org.junit.jupiter.api.Assertions thay cho org.junit.Assert)
Ví dụ
Assertions
- Assert 2 value
- Assert 2 object
Một số lưu ý
-
Một method test chỉ test cho 1 trường hợp, nó phải nhỏ, dễ đọc
-
Không viết trực tiếp code business logic trong mã test, thay vì đó nên hard code giá trị luôn
Ví dụ: Thay vì
nên
-
Chỉ mock các object/class/bean mà mình viết trong project , không mock third party lib
-
Không viết unit test cho các thư viện bên thứ 3
Ví dụ: nếu bạn sử dụng Lombok để generate code getter, setter thì tạo file lombok.config với nội dụng bên dưới để bỏ qua viết unit test
Source code ở đây