thể trùng lặp:
Is Unit Testing worth the effort?Có thể âm thanh ngu ngốc, nhưng các bài kiểm tra đơn vị có hữu ích cho thực tế không?
Được rồi, tôi biết mục đích của kiểm tra đơn vị là những gì nói chung, nhưng tôi thấy một số điều mà làm phiền tôi.
1) Mục đích của kiểm tra phát hiện lỗi sớm. Vì vậy, trong một số lần lặp lại sau, nếu tôi thực hiện một số thay đổi trong mã, kiểm tra tự động phải báo động cho tôi và cho tôi biết rằng tôi đã làm hỏng một số phần mềm bị lãng quên trước đây của tôi.
Nhưng, nói rằng tôi có lớp A và nói đó là tương tác với một số lớp khác dụ, gọi nó là lớp B.
Khi ai viết unit test cho lớp A, ông đã chế nhạo lớp B. Vì vậy, trong một số tương lai, nếu có một số thay đổi trong lớp B, và gây ra một số lỗi, chúng sẽ chỉ phản ánh trong bài kiểm tra đơn vị lớp B chứ không phải trong A (vì bài kiểm tra A không sử dụng lớp B thực sự, nhưng nó là giả lập với đầu vào và đầu ra cố định). Vì vậy, tôi không thể thấy làm thế nào để kiểm tra đơn vị có thể sớm thông báo về các lỗi mà người ta không biết? Tôi biết các lỗi có thể xảy ra trong lớp mà tôi đang thay đổi, tôi không cần kiểm tra đơn vị cho nó, tôi cần kiểm tra để cảnh báo cho tôi về những hậu quả của những thay đổi của tôi. có thể với các bài kiểm tra đơn vị. Hoặc là tôi sai?
2) Khi viết mocks và sự mong đợi đúng của phương thức gọi, đầu vào và giá trị trả về, người ta phải biết cách thử nghiệm lớp học sẽ được triển khai như thế nào. Và tôi nghĩ rằng điều đó mâu thuẫn với sự phát triển thử nghiệm. Trong TDD người ta viết các bài kiểm tra đầu tiên, và, được thúc đẩy bởi họ, người ta viết một mã. Nhưng tôi không thể viết đúng mong đợi (và kiểm tra nói chung) trừ khi tôi viết mã phải được kiểm tra. Điều đó mâu thuẫn với TDD, phải không?
Cả hai vấn đề đó có thể được giải quyết nếu tôi sử dụng các đối tượng thực thay vì mocks. Nhưng đó không phải là thử nghiệm đơn vị sau đó, phải không? Trong bài kiểm tra đơn vị lớp dưới kiểm tra phải được cô lập hình thức phần còn lại của hệ thống, không sử dụng các lớp học thực tế nhưng mocks.
Tôi chắc chắn rằng mình sai ở đâu đó, nhưng tôi không thể tìm thấy ở đâu. Tôi đã đọc và đọc và tôi không thể tìm thấy những gì tôi đã hiểu sai.
Related: http://stackoverflow.com/questions/286587/are-you-really-using-unit-tests – Thilo