Tôi đã đọc hầu hết các câu hỏi liên quan đến SO (here, here và there). Câu hỏi cuối cùng đề xuất bốn lựa chọn thay thế để tạo mã gọi các phương thức tĩnh có thể kiểm thử được. Tôi muốn hỏi về trường hợp cụ thể của tôi: Chúng tôi có một "lớp logic kinh doanh" hoặc "quy tắc" dự án trong đó có 45 lớp tĩnh (không có nhà nước, chỉ là phương pháp tĩnh). Hơn nữa, chúng không dễ dàng kiểm thử được: hầu hết chúng đều truy cập vào cơ sở dữ liệu và hệ thống tệp. Nó không phải là xấu, anyway: để truy cập vào cơ sở dữ liệu, họ sử dụng dụ duy nhất của một số lớp Mapper (tất cả các Mappers là Singletons). Bất cứ khi nào tôi cố gắng kiểm tra đơn vị, tôi chạy vào bức tường này. Vấn đề lớn nhất là đây là mã rất, rất quan trọng và những thay đổi đối với nó nên được lên kế hoạch rất cẩn thận. Câu hỏi của tôi: Tôi nên làm thế nào để làm cho đơn vị này dễ kiểm thử hơn? Tôi có nên viết 45 giao diện và sử dụng tiêm phụ thuộc không? Mặc dù vậy, làm thế nào để tôi lập/mock Mappers?Mã thử nghiệm đơn vị gọi các phương thức tĩnh
PS: Tôi đã đọc Michael Feathers' 'Làm việc với Legacy Code', vì vậy tài liệu tham khảo trực tiếp được hoan nghênh (sách khác quá :)
Sửa: Kể từ khi một số người cho biết các giải pháp có thể là nền tảng phụ thuộc Tôi đang làm việc trên .NET (C# và một số VB.NET)
Âm thanh ok. Điều đó sẽ đảm bảo làm cho các phương thức tĩnh có thể kiểm tra được, nhưng làm thế nào về mã gọi chúng? Trên một lưu ý khác, chỉ tò mò ... Là "GI" một số loại chữ ký, hoặc là nó một từ viết tắt? (Tôi đến từ Argentina) –
Gl == Good Luck :). Đối với mã sử dụng Mapper, bạn phải điều chỉnh nó để sử dụng giao diện nhà máy thay vì getInstance bởi singleton. – AlexTheo