Estamos intentando diseñar nuestro sistema para que sea verificable y, en la mayoría de los casos, desarrollado con TDD. Actualmente estamos tratando de resolver el siguiente problema:
En varios lugares es necesario que utilicemos métodos auxiliares estáticos como ImageIO y URLEncoder (ambos API Java estándar) y varias otras bibliotecas que consisten principalmente en métodos estáticos (como las bibliotecas de Apache Commons). Pero es extremadamente difícil probar los métodos que usan tales clases de ayuda estática.
Tengo varias ideas para resolver este problema:
- Use un marco simulado que pueda simular clases estáticas (como PowerMock). Esta puede ser la solución más simple, pero de alguna manera se siente como rendirse.
- Cree clases de envoltura instantáneas alrededor de todas las utilidades estáticas para que puedan ser inyectadas en las clases que las usan. Esto suena como una solución relativamente limpia, pero me temo que terminaremos creando una gran cantidad de esas clases de envoltorio.
- Extraiga todas las llamadas a estas clases auxiliares estáticas en una función que pueda ser anulada y pruebe una subclase de la clase que realmente quiero probar.
Pero sigo pensando que esto solo tiene que ser un problema que muchas personas tienen que enfrentar al hacer TDD, por lo que ya debe haber soluciones para este problema.
¿Cuál es la mejor estrategia para mantener a prueba las clases que usan estos ayudantes estáticos?