Tôi cần phải chơi quỷ ủng hộ câu hỏi này một chút vì tôi không thể bảo vệ nó tốt vì thiếu kinh nghiệm. Đây là thỏa thuận, tôi có khái niệm về sự khác biệt giữa thử nghiệm đơn vị và thử nghiệm tích hợp. Khi đặc biệt tập trung vào các phương thức kiên trì và kho lưu trữ, một bài kiểm tra đơn vị sẽ sử dụng một giả có thể thông qua một khung như Moq để khẳng định rằng một đơn đặt hàng được tìm kiếm đã được trả lại như mong đợi.
Giả sử tôi đã xây dựng bài kiểm tra đơn vị sau:
[TestMethod]
public void GetOrderByIDTest()
{
//Uses Moq for dependency for getting order to make sure
//ID I set up in 'Arrange' is same one returned to test in 'Assertion'
}
Vì vậy, nếu tôi thiết lập OrderIdExpected = 5
và đối tượng giả của tôi trở lại 5
làm ID thì bài kiểm tra của tôi sẽ vượt qua. Tôi hiểu rồi. Đơn vị tôi đã kiểm tra mã để đảm bảo những gì mã của tôi trả về đối tượng và ID dự kiến chứ không phải thứ gì khác.
Đối số tôi sẽ nhận được là:
"Tại sao không chỉ cần bỏ qua các bài kiểm tra đơn vị và làm các xét nghiệm hội nhập? Nó kiểm tra các thủ tục cơ sở dữ liệu được lưu trữ và cùng mã của bạn đó là quan trọng. Nó có vẻ như quá nhiều công việc thêm để có đơn vị xét nghiệm và kiểm tra tích hợp khi cuối cùng tôi muốn biết nếu các cuộc gọi cơ sở dữ liệu và mã hoạt động. Tôi biết các bài kiểm tra mất nhiều thời gian hơn, nhưng chúng phải được chạy và kiểm tra bất kể vì vậy dường như vô nghĩa đối với tôi để có cả hai. Chỉ cần kiểm tra những gì quan trọng. "
Tôi có thể bảo vệ nó bằng một định nghĩa trong sách giáo khoa như: "Vâng đó là một bài kiểm tra tích hợp và chúng tôi cần kiểm tra mã riêng như một bài kiểm tra đơn vị và, yada, yada, yada ..." Đây là một trường hợp giải thích thực tiễn thuần túy so với thực tế là mất đi. Đôi khi tôi gặp phải điều này và nếu tôi không thể bảo vệ lý do đằng sau mã kiểm tra đơn vị mà cuối cùng phụ thuộc vào các phụ thuộc bên ngoài, thì tôi không thể tạo ra một trường hợp cho nó.
Bất kỳ trợ giúp về câu hỏi này được đánh giá rất cao, cảm ơn!