Những gì bạn mô tả thực sự có thể không phải là một điều tồi tệ, nhưng là một con trỏ cho các vấn đề sâu hơn mà các bài kiểm tra của bạn phát hiện ra
Khi hệ thống thay đổi, chúng tôi thấy mình dành nhiều thời gian hơn để sửa các bài kiểm tra bị hỏng. Chúng tôi có đơn vị, tích hợp và kiểm tra chức năng.
Nếu bạn có thể thay đổi mã của mình và các bài kiểm tra của bạn sẽ không bị hỏng, điều đó sẽ gây nghi ngờ cho tôi. Sự khác biệt giữa một thay đổi hợp pháp và một lỗi chỉ là thực tế là nó được yêu cầu, một yêu cầu được xác định là (giả định TDD) được xác định bởi các thử nghiệm của bạn.
dữ liệu đã được mã hóa cứng.
Dữ liệu được mã hóa cứng trong các bài kiểm tra là một điều tốt. Các xét nghiệm làm việc như giả mạo, không phải là bằng chứng. Nếu có quá nhiều tính toán, các bài kiểm tra của bạn có thể là tautology. Ví dụ:
assert sum([1,2,3]) == 6
assert sum([1,2,3]) == 1 + 2 + 3
assert sum([1,2,3]) == reduce(operator.add, [1,2,3])
Độ trừu tượng càng cao, bạn càng tiến gần đến thuật toán và do đó, càng gần để so sánh việc thực hiện chính xác với chính nó.
rất ít sử dụng lại mã
Việc sử dụng lại mã tốt nhất trong các bài kiểm tra là imho 'Kiểm tra', như trong jUnits assertThat
, vì chúng giữ cho các bài kiểm tra đơn giản. Ngoài ra, nếu các thử nghiệm có thể được tái cấu trúc để chia sẻ mã, thì mã thực tế được thử nghiệm cũng có thể cũng vậy , do đó giảm các thử nghiệm đối với các thử nghiệm thử nghiệm cơ sở được tái cấu trúc.