Tôi biết đây là một câu hỏi rất cũ, nhưng tôi muốn thêm kinh nghiệm của mình vào đó, gần đây tôi đã thay đổi thói quen thử nghiệm đơn vị từ các dự án riêng biệt sang cùng một dự án.
Tại sao?
Đầu tiên tôi rất có xu hướng giữ cấu trúc thư mục dự án chính giống với dự án thử nghiệm. Vì vậy, nếu tôi có một tệp bên dưới Providers > DataProvider > SqlDataProvider.cs
thì tôi đang tạo cấu trúc tương tự trong các dự án thử nghiệm đơn vị của mình nhưProviders > DataProvider > SqlDataProvider.Tests.cs
Nhưng sau khi dự án ngày càng lớn hơn, một khi bạn di chuyển các tệp từ thư mục này sang thư mục khác hoặc từ dự án này sang dự án khác, thì việc đồng bộ hóa chúng với các dự án thử nghiệm đơn vị sẽ rất khó khăn.
Thứ hai, không phải lúc nào cũng dễ dàng điều hướng từ lớp để được kiểm tra đến lớp kiểm tra đơn vị. Điều này thậm chí còn khó hơn đối với JavaScript và Python.
Gần đây, tôi bắt đầu thực hành rằng, mỗi tệp tôi tạo (ví dụ SqlDataProvider.cs
) tôi đang tạo một tệp khác có hậu tố Test, nhưSqlDataProvider.Tests.cs
Lúc đầu, có vẻ như nó sẽ làm đầy các tệp và tài liệu tham khảo thư viện, nhưng về lâu dài, bạn sẽ loại bỏ hội chứng di chuyển ngay từ cái nhìn đầu tiên, và bạn cũng chắc chắn rằng, mỗi tệp là những ứng cử viên được kiểm tra sẽ có một tệp cặp có .Tests
hậu tố. Nó cho phép bạn dễ dàng nhảy vào tập tin thử nghiệm (vì nó nằm cạnh nhau) thay vì xem qua dự án riêng biệt.
Bạn thậm chí có thể viết các quy tắc kinh doanh để quét qua dự án và xác định lớp không có tệp .Tests và báo cáo chúng cho chủ sở hữu. Ngoài ra, bạn có thể nói với người chạy thử nghiệm của bạn dễ dàng đến .Tests
các lớp mục tiêu .
Đặc biệt đối với Js và Python, bạn sẽ không cần nhập tài liệu tham khảo của mình từ các đường dẫn khác nhau, bạn chỉ cần sử dụng cùng một đường dẫn của tệp mục tiêu đang được thử nghiệm.
Tôi đang sử dụng thực hành này trong một thời gian và tôi nghĩ rằng đó là sự đánh đổi rất hợp lý giữa quy mô dự án so với khả năng duy trì và đường cong học tập cho những người mới tham gia dự án.