Tôi có nên tách các bài kiểm tra đơn vị và kiểm tra tích hợp?


16

Tôi phải viết bài kiểm tra đơn vị và kiểm tra tích hợp cho một dự án.

  • Tất cả các bài kiểm tra có nên được đưa vào một thư mục kiểm tra không?
  • Hoặc các bài kiểm tra đơn vị và kiểm tra tích hợp từng được trong một thư mục kiểm tra riêng biệt ?
  • Hay thậm chí tôi nên đưa chúng vào các dự án riêng biệt ?

Nếu tôi giữ chúng cùng nhau, có bất kỳ lợi thế hay hạn chế nào với phương pháp này không?


1
Nếu bạn đang hoạt động trong môi trường CI, điều quan trọng là chúng có thể dễ dàng được xác định (theo thuộc tính, v.v.) vì các kiểm tra tích hợp không luôn chạy trên máy chủ xây dựng.
Robbie Dee

Câu trả lời:


17

Nói chung: có, bạn nên đặt kiểm tra tích hợp và kiểm tra đơn vị vào các thư mục khác nhau. Thông thường, các lập trình viên không vẽ một ranh giới rõ ràng giữa hai loại thử nghiệm này và chỉ viết bất kỳ loại thử nghiệm nào là hữu ích. Nhưng các bài kiểm tra tích hợp có xu hướng chậm hơn, bởi vì chúng thường liên quan đến:

  • Truy vấn cơ sở dữ liệu
  • Yêu cầu mạng
  • Hành vi phụ thuộc thời gian
  • Lượng dữ liệu lớn

Ngược lại, một thử nghiệm đơn vị sẽ chế nhạo bất kỳ hoạt động đắt tiền nào, vì vậy các thử nghiệm đơn vị có xu hướng chạy nhanh (trên thực tế, phần chậm nhất khi chạy thử nghiệm thường là chính khung thử nghiệm).

Khi một lập trình viên đang làm việc trên hệ thống, họ đang trong chu trình kiểm tra chỉnh sửa. Họ nhận được phản hồi thử nghiệm càng nhanh và chu kỳ càng ngắn thì họ càng có năng suất cao hơn. Vì vậy, chúng tôi muốn chỉ chạy thử nghiệm quan trọng mà hoàn thành nhanh chóng. Bộ kiểm tra hoàn chỉnh sẽ chỉ được thực thi như một phần của quy trình QA, ví dụ trên máy chủ CI.

Điều này có nghĩa là các bộ thử nghiệm lớn nên được phân loại. Chúng ta chỉ có thể chọn kiểm tra đơn vị cho một thành phần cụ thể? Chúng tôi có thể loại trừ các bài kiểm tra chậm? Một cách đơn giản để làm điều này là duy trì các bộ thử nghiệm khác nhau trong các thư mục khác nhau. Nếu bạn chỉ có rất ít bài kiểm tra, một thư mục cũng sẽ ổn miễn là lập trình viên có thể dễ dàng chọn một tập hợp các bài kiểm tra.

Bất cứ điều gì cho phép một lập trình viên nhận được phản hồi nhanh chóng là tốt. Bộ kiểm tra toàn diện nhất không thành vấn đề nếu nó không được thực thi thường xuyên.

Đọc thêm:


Khi tách các thư mục, bạn có giữ từng thư trong cùng một gói với mã sản xuất (để bạn có thể kiểm tra các phương thức được bảo vệ) không? Ví dụ, bạn tạo một mô-đun maven cho các bài kiểm tra đơn vị và một mô-đun maven khác cho các bài kiểm tra tích hợp. Như vậy, bạn có thể tách chúng ra và vẫn dễ dàng kiểm tra các phương thức được bảo vệ.
ihebiheb

@ihebiheb Trong Java, sử dụng khả năng hiển thị gói khá khó chịu. Trong một số trường hợp, có thể hữu ích khi sử dụng nó và truy cập các API này từ các bài kiểm tra đơn vị. Nhưng nói chung, điều đó là không cần thiết. Các thử nghiệm kiểu tích hợp không bao giờ cần truy cập vào các thành viên gói riêng. Việc có nên đưa các thử nghiệm vào một dự án Maven riêng hay không tùy thuộc vào cách bạn muốn chạy và triển khai chúng. Tôi không vào Java / Maven để có thể cho bạn biết điều gì hợp lý ở đây.
amon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.