JMockit est une autre boîte à outils qui permet de se moquer des méthodes statiques (ainsi que des méthodes finales, des constructeurs, etc.).
Je ne vois aucun problème avec le judicieux l'utilisation de méthodes statiques lors de la conception d'une solution autrement OO. Par exemple, un motif/idiome que j'aime utiliser est la façade statique , en particulier pour fournir une API plus simple et plus facile à utiliser pour le sous-système de persistance dans une application métier. À mon avis, aucune autre solution est plus élégante que quelque chose comme:
List<Person> peopleAboveAge =
find("select p from Person p where p.age >= ?", age);
où la méthode find
est importée statiquement d'une classe PersistenceFacade
qui ne définit que des méthodes statiques et encapsule comment obtenir la bonne instance de session/EntityManager. Cette solution est conviviale et flexible. Je l'ai utilisé dans une application d'entreprise qui avait plus de 500 entités persistantes, en utilisant Hibernate. La façade statique a aidé lorsque nous avons migré d'Hibernate 2 vers Hibernate 3, lorsque nous avons migré d'Oracle vers Sybase puis de nouveau vers Oracle, et lorsque nous avons commencé à utiliser les annotations JPA au lieu des fichiers "hbm.xml" pour le mappage ORM.
Voir la question connexe [Comment se moquer des méthodes statiques] (http://stackoverflow.com/questions/153048/how-to-mock-with-static-methods). – flicken