Không chỉ kiểm tra đơn vị tạo điều kiện cho thiết kế, mà đó là một trong những lợi ích chính của họ.
Viết thử nghiệm đầu tiên ổ đĩa mô-đun và cấu trúc mã sạch.
Khi bạn viết mã kiểm tra trước, bạn sẽ thấy rằng bất kỳ "điều kiện" nào của một đơn vị mã nhất định sẽ tự nhiên bị đẩy ra phụ thuộc (thường thông qua giả hoặc sơ khai) khi bạn giả sử chúng trong mã của mình.
"Đưa ra điều kiện x, mong đợi hành vi y", thường sẽ trở thành một sơ khai để cung cấp x
(đó là một kịch bản trong đó thử nghiệm cần xác minh hành vi của thành phần hiện tại) và y
sẽ trở thành một giả, một cuộc gọi sẽ được xác minh tại kết thúc thử nghiệm (trừ khi đó là "nên trả về y
", trong trường hợp đó, thử nghiệm sẽ chỉ xác minh rõ ràng giá trị trả về).
Sau đó, một khi đơn vị này hoạt động như được chỉ định, bạn chuyển sang viết các phụ thuộc (cho x
và y
) bạn đã phát hiện ra.
Điều này làm cho việc viết mã sạch, mô-đun trở thành một quy trình rất dễ dàng và tự nhiên, trong khi nếu không, nó thường dễ làm mờ các trách nhiệm và hành vi của cặp đôi với nhau mà không nhận ra.
Kiểm tra viết sau này sẽ cho bạn biết khi mã của bạn có cấu trúc kém.
Khi việc kiểm tra viết cho một đoạn mã trở nên khó khăn vì có quá nhiều thứ còn sơ khai hoặc giả, hoặc vì mọi thứ quá chặt chẽ với nhau, bạn biết rằng bạn có những cải tiến để thực hiện trong mã của mình.
Khi "thay đổi bài kiểm tra" trở thành gánh nặng vì có quá nhiều hành vi trong một đơn vị, bạn biết rằng bạn có những cải tiến để thực hiện mã của mình (hoặc đơn giản là trong cách tiếp cận viết bài kiểm tra - nhưng đây không phải là trường hợp theo kinh nghiệm của tôi) .
Khi kịch bản của bạn trở nên quá phức tạp ( "nếu x
và y
và z
sau đó ...") bởi vì bạn cần phải trừu tượng, bạn biết bạn có những cải tiến để thực hiện trong mã của bạn.
Khi bạn kết thúc với các thử nghiệm tương tự trong hai đồ đạc khác nhau vì trùng lặp và dự phòng, bạn biết bạn có những cải tiến để thực hiện trong mã của mình.
Dưới đây là một bài nói chuyện tuyệt vời của Michael Feathers chứng minh mối quan hệ rất chặt chẽ giữa khả năng kiểm tra và thiết kế trong mã (ban đầu được đăng bởi displayName trong các bình luận). Buổi nói chuyện cũng đề cập đến một số khiếu nại và quan niệm sai lầm về thiết kế tốt và khả năng kiểm tra nói chung.