Chúng tôi đang cố gắng thiết kế hệ thống của mình để có thể kiểm tra được và trong hầu hết các phần được phát triển bằng TDD. Hiện tại chúng tôi đang cố gắng giải quyết vấn đề sau:
Ở nhiều nơi khác nhau, chúng tôi cần sử dụng các phương thức trợ giúp tĩnh như ImageIO và URLEncoder (cả API Java tiêu chuẩn) và nhiều thư viện khác bao gồm chủ yếu là các phương thức tĩnh (như thư viện Apache Commons). Nhưng cực kỳ khó để kiểm tra các phương thức sử dụng các lớp trình trợ giúp tĩnh như vậy.
Tôi có một vài ý tưởng để giải quyết vấn đề này:
- Sử dụng một khung giả có thể giả định các lớp tĩnh (như PowerMock). Đây có thể là giải pháp đơn giản nhất nhưng bằng cách nào đó cảm thấy muốn bỏ cuộc.
- Tạo các lớp trình bao bọc khả thi xung quanh tất cả các tiện ích tĩnh đó để chúng có thể được đưa vào các lớp sử dụng chúng. Điều này nghe có vẻ là một giải pháp tương đối sạch nhưng tôi sợ rằng cuối cùng chúng ta sẽ tạo ra rất nhiều lớp bao bọc.
- Trích xuất mọi cuộc gọi đến các lớp trình trợ giúp tĩnh này thành một hàm có thể được ghi đè và kiểm tra một lớp con của lớp mà tôi thực sự muốn kiểm tra.
Nhưng tôi cứ nghĩ rằng đây chỉ là một vấn đề mà nhiều người phải đối mặt khi làm TDD - vì vậy phải có giải pháp cho vấn đề này.
Chiến lược tốt nhất để giữ cho các lớp sử dụng các trình trợ giúp tĩnh này có thể kiểm tra được là gì?