Code Vì Đam Mê
Junior Member
Mình đã từng dev một proj khá lớn. Và mình nhận ra UT và AT (Acceptance test) là dùng để giúp người mới viết feature mới mà ko làm sai lệch những feature cũ.
Hơn nữa UT cũng giúp bạn refactor code một cách tự tin mà ko sợ break function.
1 vd UT về test một cái API get user chẳng hạn
API thì nó gồm 1 controller, 1 cái service. Thường thì bạn sẽ phải unittest cái service đó, cách test như sau:
_Tạo class test, tạo mock các dependency của service cần dùng.
_Tạo mock data: ở đây là tạo 1 instance User
_Khởi tạo service cần test.
_Viết hàm test, ở đây là hàm test_GetUser. Mock cái instance kia vào service, thường là mock vào 1 cái method getUserFromDB của service, sau đó assert kết quả trả về của service đó có equal cái instance mình bỏ vào ko.
Thường là khi test service như vậy phải viết tối thiểu 3 case, 1 là case bt, 2 là null, 3 là exception.
P/S: Lâu qúa ko viết UT nên nhớ mang máng là vậy. Hồi đó có 1 dạo phải đi tăng coverage cho cái app nên còn phải UT cho mấy cái equal, hashcode, toString nữa cơ
Hơn nữa UT cũng giúp bạn refactor code một cách tự tin mà ko sợ break function.
1 vd UT về test một cái API get user chẳng hạn
API thì nó gồm 1 controller, 1 cái service. Thường thì bạn sẽ phải unittest cái service đó, cách test như sau:
_Tạo class test, tạo mock các dependency của service cần dùng.
_Tạo mock data: ở đây là tạo 1 instance User
_Khởi tạo service cần test.
_Viết hàm test, ở đây là hàm test_GetUser. Mock cái instance kia vào service, thường là mock vào 1 cái method getUserFromDB của service, sau đó assert kết quả trả về của service đó có equal cái instance mình bỏ vào ko.
Thường là khi test service như vậy phải viết tối thiểu 3 case, 1 là case bt, 2 là null, 3 là exception.
P/S: Lâu qúa ko viết UT nên nhớ mang máng là vậy. Hồi đó có 1 dạo phải đi tăng coverage cho cái app nên còn phải UT cho mấy cái equal, hashcode, toString nữa cơ

Sửa lần cuối:
) bên đó chỉ có châm ngôn là đã test là phải có lỗi. Không lỗi thì là code cũ 
được cái mỗi lần refactor thấy tự tin hẵn 