Avatar
1
Hồng Quân Nguyễn Beginner
Cách viết JUnit trong dự án Java
Hi, chào mọi người. em có vài thắc mắc về việc viết Unit Test:
  1. Viết bao nhiêu case cho một method xử lý logic, ví dụ nếu một method có khoảng 20 case thì vẫn phải viết đủ 20 case ạ? như thế có vẻ khi sửa code ở method đó thì người khác sẽ rất tốn thời gian để đọc và sửa.
  2. Với các dự án viết bằng Spring, có RESTFul API thì mình sẽ viết Test cho những tầng nào ạ? tất cả hay chỉ ở tầng service ạ?
  3. coverage tối thiểu bao nhiêu % là đủ tốt ạ?
  4. Có project opensource mẫu nào về việc viết Unit Test cho các dự án Java core, Spring không ạ?

Mong mn giải đáp giúp em. Em cảm ơn ạ!

  • Answer
java junit-test
Remain: 5
1 Answer
Avatar
monkey Beginner
monkey Beginner
The Best Answer
  1. Để biết viết bao nhiêu case là đủ thì nếu không có tool hỗ trợ thì em có thể suy đoán theo số nhánh, ví dụ:

if (a > b) {
 // làm gì đó
} else {
  // làm gì đó
}

Thì em sẽ cần test 2 case để vượt qua được tất cả các bài test. Tuy nhiên để đơn giản hơn em có thể sử dụng jacoco, 1 công cụ hỗ trợ report coverage nó sẽ hiển thị giúp em thế này:

Thì nếu chưa màu xanh hết em sẽ biết là em còn trường hợp chưa test hết.

  1. Bất cứ tầng nào có xử lý logic if else, vòng for thì đều cần phải test hết em ạ, nhưng tầng config chỉ chứa mấy cái code cầu hình thì bỏ qua cũng không sao.

  1. Như dự án sản phẩm anh đang yêu cầu 80% là đủ, còn dự án open source anh muốn 100%.

  1. Hiện tại anh thấy không có nhưng em có thể tham khảo mẫu này nhé.
  • 1
  • Reply
Với một dự án sử dụng Spring boot thì nên viết Unit test cho nhưng layer nào ạ? có cần viết Unit test cho Controller layer không anh?  –  Hồng Quân Nguyễn 1668017664000
Bất cứ tầng nào có xử lý logic if else, vòng for thì đều cần phải test hết em ạ, nhưng tầng config chỉ chứa mấy cái code cầu hình thì bỏ qua cũng không sao. Và controller chắc chắn là phải test rồi em ạ. Vì chỗ đó tương đói nhiều logic và nghiệp vụ.  –  monkey 1668030946000
vâng. em cảm ơn anh đã giải đáp ạ  –  Hồng Quân Nguyễn 1668040100000
Ok em  –  monkey 1668040457000