Estamos tratando de diseñar nuestro sistema para que sea comprobable y en la mayoría de las partes desarrollado utilizando TDD. Actualmente estamos tratando de resolver el siguiente problema:
En varios lugares, es necesario que usemos 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 Apache Commons). Pero es extremadamente difícil probar esos métodos que usan tales clases auxiliares estáticas.
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 darse por vencido.
- Cree clases de contenedor instanciables alrededor de todas esas utilidades estáticas para que puedan inyectarse 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 contenedor.
- Extraiga cada llamada a estas clases auxiliares estáticas en una función que se pueda anular 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 deben enfrentar al hacer TDD, por lo que ya debe haber soluciones para este problema.
¿Cuál es la mejor estrategia para mantener comprobables las clases que usan estos ayudantes estáticos?