Cách kiểm tra đơn vị tổ chức hiện tại của tôi tóm tắt như sau:Làm thế nào để tổ chức kiểm tra đơn vị và không thực hiện tái cấu trúc một cơn ác mộng?
- Mỗi dự án có dự án riêng của mình với các bài kiểm tra đơn vị. Đối với một dự án
BusinessLayer
, có một dự án thử nghiệmBusinessLayer.UnitTests
. - Đối với mỗi lớp tôi muốn kiểm tra, có một lớp kiểm tra riêng biệt trong dự án thử nghiệm được đặt chính xác cùng cấu trúc thư mục và trong cùng một không gian tên giống như lớp đang được kiểm tra. Đối với một lớp học
CustomerRepository
từ một không gian tênBusinessLayer.Repositories
, có một lớp thử nghiệmCustomerRepositoryTests
trong một không gian tênBusinessLayerUnitTests.Repositories
.
Phương pháp trong mỗi lớp thử theo quy ước đặt tên đơn giản MethodName_Condition_ExpectedOutcome
. Vì vậy, các lớp CustomerRepositoryTests
chứa thử nghiệm cho một lớp CustomerRepository
với một phương pháp Get
định nghĩa trông giống như sau:
[TestFixture]
public class CustomerRepositoryTests
{
[Test]
public void Get_WhenX_ThenRecordIsReturned()
{
// ...
}
[Test]
public void Get_WhenY_ThenExceptionIsThrown()
{
// ...
}
}
Cách tiếp cận này đã phục vụ tôi khá tốt, bởi vì nó làm cho việc định vị các bài kiểm tra đối với một số đoạn mã thực sự đơn giản. Trên trang đối diện, nó làm cho việc tái cấu trúc mã thực sự khó khăn hơn sau đó nó phải là:
- Khi tôi quyết định chia dự án thành nhiều dự án nhỏ hơn, tôi cũng cần chia dự án thử nghiệm của mình.
- Khi tôi muốn thay đổi không gian tên của một lớp, tôi phải nhớ thay đổi không gian tên (và cấu trúc thư mục) của một lớp thử nghiệm.
- Khi tôi thay đổi tên của một phương pháp, tôi phải trải qua tất cả các bài kiểm tra và thay đổi tên ở đó. Chắc chắn, tôi có thể sử dụng Tìm kiếm & Thay thế, nhưng điều đó không đáng tin cậy lắm. Cuối cùng, tôi vẫn cần kiểm tra các thay đổi theo cách thủ công.
Có một số cách thông minh của tổ chức kiểm tra đơn vị đó vẫn sẽ cho phép tôi để xác định vị trí thử nghiệm cho một mã cụ thể một cách nhanh chóng và đồng thời bản thân cho vay nhiều hơn đối với refactoring?
Ngoài ra, có một số người, uh, có lẽ Studio mở rộng Visual, mà sẽ cho phép tôi để bằng cách nào đó nói rằng "hey, những xét nghiệm này cho rằng phương pháp, vì vậy khi tên của những thay đổi phương pháp, hãy nên loại và thay đổi các bài kiểm tra là tốt "? Thành thật mà nói, tôi đang nghiêm túc xem xét để viết một cái gì đó như thế bản thân mình :)
Làm cách nào để đặt tên cho các phương pháp thử nghiệm của bạn? Chúng có chứa tên của phương pháp bạn đang thử nghiệm không? –
@ UfukHacıoğulları Có, họ làm. Trong câu hỏi tôi đề cập đến quy ước chính xác những cái tên này theo sau. –