Tôi đã thực sự nhận được vào TDD và tôi đã bắt đầu sử dụng mockito trong jUnit để cải thiện khả năng kiểm tra mã của tôi. Tôi thực sự yêu mockito!gọi phương thức tĩnh trên tham số mà không instantiating lớp trong đối số
Tôi nhận thấy rằng tôi phải thay đổi cách tôi nghĩ về mã hóa, như chuyển các cộng tác viên càng nhiều càng tốt vào các phương pháp và hạn chế công việc được thực hiện trong các nhà thầu bất cứ khi nào có thể.
Kịch bản sau đây đã đảm bảo một số lời khuyên từ các chuyên gia ở đây về SO.
Giả sử tôi có một phương thức, điều đó sẽ gọi một số phương thức tĩnh trên một lớp nhất định. VÍ DỤ.
public void method(){
OtherClass.staticMethod();
}
Điều này thường rất tệ nhưng cần thiết trong trường hợp của tôi. Để làm cho mã dễ kiểm tra hơn trong các bài kiểm tra đơn vị của tôi, tôi muốn tránh sự phụ thuộc vào OtherClass và chuyển nó thành một đối số.
Điều này không hoạt động vì nó mang lại lỗi thời gian biên dịch.
public void method(Class<? extends OtherClass> util){
util.staticMethod();
}
...
method(OtherClass.class);
này sẽ làm việc, nhưng tôi không thích OtherClass instantiating nếu tôi không phải, vì nó là chỉ một lớp các tiện ích tĩnh như phương pháp:
public void method(OtherClass util){
util.staticMethod();
}
...
method(new OtherClass());
Câu hỏi của tôi cho bạn : Có cách nào tốt hơn thích hợp hơn để thực hiện việc này mà không sử dụng từ khóa mới không?
Câu hỏi rất được định dạng cho người dùng mới, xin chúc mừng :) – MarioDS
Tôi không chắc liệu mã cuối cùng của bạn có phải là từ nếu bạn chuyển một thể hiện của một lớp con 'OtherClass'. Việc truy cập các phương thức tĩnh thông qua một cá thể có vẻ khó hiểu với tôi vì nó không liên quan đến cá thể đó ** và nó có thể không hoạt động theo cách bạn nghĩ. –
BTW, sử dụng ** Singleton Pattern ** thay vì phương pháp tĩnh trong trường hợp của bạn? –