Cuando trabajo con código heredado y trato de crear pruebas, a menudo divido dependencias de clases o métodos para poder escribir pruebas de unidad usando burlas para estas dependencias. Las dependencias más a menudo vienen en forma de llamadas a clases estáticas y objetos creados usando la nueva palabra clave en el constructor u otras ubicaciones en esa clase.La forma más simple y rápida de separar todas las dependencias de una clase
En la mayoría de los casos, las llamadas estáticas se manejan envolviendo la dependencia estática, o si es un patrón singleton (o similar) en forma de StaticClass.Current.MethodCall() pasando esa dependencia por su interfaz va el constructor .
En la mayoría de los casos, los usos de la nueva palabra clave en el constructor simplemente se reemplazan al pasar esa interfaz en el constructor.
En la mayoría de los casos, los usos de la nueva palabra clave en otras partes de la clase se manejan mediante el mismo método que el anterior o, si es necesario, crean una fábrica y pasan la interfaz de fábrica en el constructor.
Siempre utilizo las herramientas de refactorización de Resharpers para ayudarme con todos estos desgloses, sin embargo, la mayoría de las cosas todavía son trabajo manual (que podría automatizarse) y para algunas clases y métodos heredados que pueden ser un proceso muy tedioso. ¿Existen otros complementos de refactorización y/o herramientas que me puedan ayudar en este proceso? ¿Existe una herramienta de refactorización de "romper todas las dependencias de esta clase en un solo clic"? =)
Me parece que todos estos pasos son comunes para muchos desarrolladores y un problema común, y antes de intentar escribir el complemento en Resharper o CodeRush, tengo que preguntar, porque alguien probablemente ya ha intentado esto ...
añadido:
en la reflexión de respuestas a continuación: aunque puede que no desee salir todo a la vez (un clic total de estallido podría causar más problemas que ayuda a) dejar de ser capaz de simplemente salir 1 dependencias de métodos, o 1-2 dependencias fácilmente, serían de gran diferencia.
Además, el código de refactorización tiene una medida de "prueba y ve lo que pasa solo para aprender cómo encaja todo" y un salto total de un clic ayudaría a procesar toneladas, incluso si no verificas ese código en ..
Al igual que el ahora clásico Trabajo eficazmente con el código heredado que se menciona a continuación, puede encontrar el desarrollo de aplicaciones de Brownfield en .NET interesante: http://www.manning.com/baley/ – AakashM