He estado trabajando en un proyecto ASP.NET MVC durante aproximadamente 8 meses. En su mayor parte he estado usando TDD, algunos aspectos fueron cubiertos por pruebas unitarias solo después de haber escrito el código real. En total, el proyecto tiene una buena cobertura de prueba.Consejos sobre cómo escribir pruebas TDD de la unidad de refactorización
Estoy bastante satisfecho con los resultados hasta ahora. Refactorizar realmente es mucho más fácil y mis pruebas me han ayudado a descubrir bastantes errores incluso antes de ejecutar mi software la primera vez. Además, he desarrollado falsificaciones y ayudantes más sofisticados para ayudarme a minimizar el código de prueba.
Sin embargo, lo que realmente no me gusta es el hecho de que frecuentemente me encuentro teniendo que actualizar las pruebas de unidades existentes para dar cuenta de las refactorizaciones que hice al software. La refacturación del software ahora es rápida y sin problemas, pero la refacturación de mis pruebas unitarias es bastante aburrida y tediosa. De hecho, el costo de mantener mis pruebas unitarias es mayor que el costo de escribirlas en primer lugar.
Me pregunto si podría estar haciendo algo mal o si esta relación de costo de desarrollo de prueba frente a mantenimiento de prueba es normal. Ya he intentado escribir tantas pruebas como sea posible para que estas cubran mis historias de usuario en lugar de cubrir sistemáticamente la interfaz de mi objeto como se sugiere en this blog article.
Además, ¿tiene más consejos sobre cómo escribir pruebas TDD para que la refactorización rompa la menor cantidad posible de pruebas?
Editar: Como Henning y tvanfosson señalaron correctamente, generalmente es la parte de configuración que es más costosa de escribir y mantener. Las pruebas rotas son (en mi experiencia) generalmente el resultado de una refactorización al modelo de dominio que no es compatible con la parte de instalación de esas pruebas.
¿Puede dar un ejemplo específico de cómo la refacturación de su código significó cambios en las pruebas de su unidad? Aunque hay ocasiones en que esto sucederá, personalmente no creo que las pruebas de "unidad" verdaderas se vean afectadas por la refactorización (aparte de mover algunas pruebas y/o escribir nuevas pruebas para el código factorizado). Me doy cuenta de que no es una respuesta muy útil y espero que ejemplos específicos puedan conducir a una. – kdgregory