Estoy trabajando con un código existente, tratando de agregarlo y aumentar las pruebas unitarias para él. Pero encontrarse con algunos problemas para hacer que el código sea comprobable.Diseñando constructores para Testability
Constructor original:
public Info() throws Exception
{
_ServiceProperties = new ServiceProperties();
_SshProperties = new SshProperties();
}
Soy consciente de que esto es malo, y obviamente no comprobable. En un entorno junit, esta clase no podrá crear todas las veces, ya que no podrá encontrar las propiedades necesarias para construirse. Ahora, soy consciente de que esta clase sería mucho más comprobable con el simple cambio de mover todo lo que está precedido por 'nuevo' como parámetro.
Así que terminan con:
Nuevo Constructor:
public Info(ServiceProperties srvProps, SshProperties sshProps) throws Exception
{
_ServiceProperties = srvProps;
_SshProperties = sshProps;
}
que me permite adecuadamente unidad de prueba esta clase Información. El problema, sin embargo, es ahora todo ese trabajo es empujado a alguna otra clase:
Método alguna otra clase:
public void useInfo() throws Exception
{
ServiceProperties srvProps = new ServiceProperties();
SshProperties sshProps = new SshProperties();
Info info = new Info(srvProprs, sshProprs);
doStuffWithInfo(info);
}
Ahora bien, este método no es comprobable. Todo lo que he logrado hacer es empujar hacia donde están ocurriendo las construcciones de estos objetos de Propiedad, y en algún otro lugar algún trozo de código va a estar atorado y de hecho tiene que llamar "nuevo".
Aquí está el problema para mí: no puedo encontrar la manera de romper esta cadena de eventos simplemente empujando estas "nuevas" llamadas a otro lugar. ¿Qué me estoy perdiendo?
También puede echar un vistazo a nuestra Material del curso de primavera: http://www.trainologic.org/courses/info/2 –