Eu realmente acho que é cheiro de código, se você precisar zombar de métodos estáticos também.
- Métodos estáticos para acessar funcionalidades comuns? -> Use uma instância singleton e injete esse
- Código de terceiros? -> Coloque-o em sua própria interface / delegado (e, se necessário, torne-o um singleton também)
A única vez que isso parece exagero para mim, são bibliotecas como o Goiaba, mas você não precisa zombar desse tipo porque faz parte da lógica ... (coisas como Iterables.transform (..))
Dessa forma, seu próprio código permanece limpo, você pode zombar de todas as suas dependências de maneira limpa e possui uma camada anticorrupção contra dependências externas. Eu já vi o PowerMock em prática e todas as classes para as quais precisávamos eram mal projetadas. Além disso, a integração do PowerMock às vezes causava sérios problemas
(por exemplo, https://code.google.com/p/powermock/issues/detail?id=355 )
PS: O mesmo vale para métodos privados também. Eu não acho que os testes devam saber sobre os detalhes dos métodos privados. Se uma classe é tão complexa que tenta zombar de métodos privados, provavelmente é um sinal para dividi-la ...