Я серйозно думаю, що це кодовий запах, якщо вам також потрібно знущатися над статичними методами.
- Статичні методи доступу до загальної функціональності? -> Використовуйте одиночний екземпляр і введіть це
- Код сторони? -> Загорніть його у свій власний інтерфейс / делегат (і при необхідності зробіть його також синглтоном)
Єдиний раз, коли це здається мені надмірним, - це мовби, як Гуава, але вам не потрібно знущатися над цим видом, тому що це частина логіки ... (такі речі, як Iterables.transform (..))
Таким чином ваш власний код залишається в чистоті, ви можете з глузду вимикати всі ваші залежності, і у вас є антикорупційний шар проти зовнішніх залежностей. Я бачив PowerMock на практиці, і всі класи, які нам були потрібні, були погано розроблені. Також інтеграція PowerMock часом спричиняла серйозні проблеми
(наприклад, https://code.google.com/p/powermock/isissue/detail?id=355 )
PS: Те ж саме стосується і приватних методів. Я не думаю, що тести повинні знати про деталі приватних методів. Якщо клас настільки складний, що він спокушається знущатися над приватними методами, це, мабуть, знак розділити цей клас ...