Chắc chắn là một danh sách tốt. Dưới đây là một vài suy nghĩ về nó:
Viết bài kiểm tra trước, sau đó là mã.
Tôi đồng ý, ở mức độ cao. Nhưng, tôi muốn cụ thể hơn: "Trước tiên hãy viết một bài kiểm tra, sau đó viết một đoạn mã vừa đủ để vượt qua bài kiểm tra và lặp lại." Nếu không, tôi e rằng các bài kiểm tra đơn vị của tôi sẽ giống các bài kiểm tra tích hợp hoặc chấp nhận hơn.
Thiết kế các lớp bằng cách sử dụng tiêm phụ thuộc.
Đã đồng ý. Khi một đối tượng tạo ra các phụ thuộc của chính nó, bạn không có quyền kiểm soát chúng. Inversion of Control / Dependency Injection cung cấp cho bạn quyền kiểm soát đó, cho phép bạn cô lập đối tượng đang được kiểm tra bằng mocks / sơ khai / vv. Đây là cách bạn kiểm tra các đối tượng một cách riêng biệt.
Tách mã giao diện người dùng khỏi hành vi của nó bằng cách sử dụng Model-View-Controller hoặc Model-View-Presenter.
Đã đồng ý. Lưu ý rằng ngay cả người trình bày / người điều khiển cũng có thể được kiểm tra bằng cách sử dụng DI / IoC, bằng cách cung cấp cho nó một chế độ xem và mô hình bị chế nhạo / chế nhạo. Hãy xem Presenter First TDD để biết thêm về điều đó.
Không viết các phương thức hoặc lớp tĩnh.
Không chắc tôi đồng ý với điều này. Có thể kiểm tra đơn vị một phương thức / lớp tĩnh mà không cần sử dụng mocks. Vì vậy, có lẽ đây là một trong những quy tắc cụ thể của Rhino Mock mà bạn đã đề cập.
Chương trình tắt giao diện, không phải lớp học.
Tôi đồng ý, nhưng vì một lý do hơi khác. Các giao diện cung cấp rất nhiều tính linh hoạt cho nhà phát triển phần mềm - ngoài việc chỉ hỗ trợ cho các khung đối tượng giả khác nhau. Ví dụ, không thể hỗ trợ DI đúng cách nếu không có giao diện.
Cô lập các phụ thuộc bên ngoài.
Đã đồng ý. Ẩn phụ thuộc bên ngoài đằng sau mặt tiền hoặc bộ điều hợp của riêng bạn (nếu thích hợp) bằng một giao diện. Điều này sẽ cho phép bạn tách phần mềm của mình khỏi sự phụ thuộc bên ngoài, có thể là dịch vụ web, hàng đợi, cơ sở dữ liệu hoặc thứ gì khác. Điều này đặc biệt quan trọng khi nhóm của bạn không kiểm soát được sự phụ thuộc (hay còn gọi là bên ngoài).
Đánh dấu là ảo các phương pháp bạn định chế nhạo.
Đó là một hạn chế của Rhino Mocks. Trong một môi trường thích viết mã bằng tay hơn một khung đối tượng giả, điều đó sẽ không cần thiết.
Và, một số điểm mới cần xem xét:
Sử dụng các mẫu thiết kế sáng tạo. Điều này sẽ hỗ trợ với DI, nhưng nó cũng cho phép bạn tách mã đó và kiểm tra nó độc lập với các logic khác.
Viết bài kiểm tra bằng kỹ thuật Sắp xếp / Hành động / Khẳng định của Bill Wake . Kỹ thuật này làm cho nó rất rõ ràng cấu hình nào là cần thiết, những gì thực sự đang được thử nghiệm và những gì được mong đợi.
Đừng ngại tự chế giễu / sơ khai của chính mình. Thông thường, bạn sẽ thấy rằng việc sử dụng các khuôn khổ đối tượng giả làm cho các bài kiểm tra của bạn cực kỳ khó đọc. Bằng cách tự giới thiệu, bạn sẽ có toàn quyền kiểm soát đối với các mô phỏng / sơ khai của mình và bạn sẽ có thể đọc được các thử nghiệm của mình. (Tham khảo lại điểm trước.)
Tránh cám dỗ để cấu trúc lại sự trùng lặp từ các bài kiểm tra đơn vị của bạn thành các lớp cơ sở trừu tượng hoặc các phương thức thiết lập / xé nhỏ. Làm như vậy sẽ ẩn cấu hình / mã xóa khỏi nhà phát triển đang cố gắng kiểm tra đơn vị. Trong trường hợp này, sự rõ ràng của từng bài kiểm tra riêng lẻ quan trọng hơn việc cấu trúc lại sự trùng lặp.
Thực hiện Tích hợp Liên tục. Đăng ký mã của bạn trên mỗi "thanh màu xanh lá cây". Xây dựng phần mềm của bạn và chạy bộ kiểm tra đơn vị đầy đủ của bạn trong mỗi lần đăng ký. (Chắc chắn, đây không phải là một phương pháp viết mã; nhưng nó là một công cụ đáng kinh ngạc để giữ cho phần mềm của bạn sạch sẽ và được tích hợp đầy đủ.)