J'ai sérieusement ne pense qu'il est odeur de code si vous avez besoin de se moquer des méthodes statiques, trop.
- Méthodes statiques pour accéder à la fonctionnalité commune? -> Utiliser une instance du singleton et injecter que
- Troisième partie du code? -> L'envelopper dans votre propre interface/délégué (et, si nécessaire, faire un singleton, trop)
La seule fois que cela paraît exagéré pour moi, est libs comme la Goyave, mais vous ne devriez pas avoir à se moquer de ce genre de toute façon parce que c'est une partie de la logique... (des trucs comme Iterables.transformer(..))
De cette façon, votre propre code reste propre, vous pouvez vous moquer de toutes vos dépendances de manière propre, et vous avez un anti corruption couche contre les dépendances externes.
J'ai vu PowerMock dans la pratique, et de toutes les classes dont nous avions besoin pour ont été mal conçus. Aussi l'intégration de PowerMock parfois causé de sérieux problèmes
(par ex. https://code.google.com/p/powermock/issues/detail?id=355)
PS: en est de Même pour les méthodes privées, trop. Je ne pense pas que les tests doivent connaître le détail des méthodes privées. Si une classe est tellement complexe qu'il tente de se moquer privée méthodes, c'est probablement un signe de diviser la classe...