Tôi thực sự nghĩ rằng đó là mùi mã nếu bạn cũng cần phải chế giễu các phương thức tĩnh.
- Phương pháp tĩnh để truy cập chức năng chung? -> Sử dụng một cá thể đơn lẻ và tiêm
- Mã bên thứ ba? -> Gói nó vào giao diện / đại biểu của riêng bạn (và nếu cần, hãy biến nó thành một singleton)
Lần duy nhất điều này có vẻ quá mức đối với tôi, là những người như Guava, nhưng bạn không cần phải chế giễu kiểu này vì dù sao nó cũng là một phần của logic ... (những thứ như Iterables.transform (..))
Đó là mã của riêng bạn giữ sạch sẽ, bạn có thể chế nhạo tất cả các phụ thuộc của bạn một cách sạch sẽ, và bạn có một lớp chống tham nhũng chống lại các phụ thuộc bên ngoài. Tôi đã thấy PowerMock trong thực tế và tất cả các lớp chúng tôi cần nó đều được thiết kế kém. Ngoài ra, việc tích hợp PowerMock đôi khi gây ra sự cố nghiêm trọng
(ví dụ: https://code.google.com.vn/p/powermock/issues/detail?id=355 )
PS: Tương tự giữ cho các phương thức riêng tư, quá. Tôi không nghĩ các bài kiểm tra nên biết về các chi tiết của các phương pháp riêng tư. Nếu một lớp phức tạp đến mức nó cám dỗ để chế nhạo các phương thức riêng tư, thì đó có lẽ là một dấu hiệu để tách lớp đó ...