Veo el beneficio de TDD, y estoy tratando de aprender cómo rodearlo. También estoy leyendo más sobre DDD y quiero comenzar a aplicar ambos a mis proyectos de software.¿Qué tan lejos debe aplicar TDD?
He comprado algunos libros de programación "prácticos" (me refiero a los que hablan de una aplicación del mundo real con soluciones reales en lugar de pequeños fragmentos) y me he dado cuenta de que normalmente comienzan a definir la capa de "infraestructura" de la aplicación en la primera moda de código tradicional, en contraposición al uso de TDD; ambos libros se esfuerzan por discutir qué tan bueno es el TDD y cómo lo utilizará el estudio de caso.
Por ejemplo, en uno de los libros, ASP.NET 3.5 redes sociales, todo el segundo capítulo se desarrolla una clase de registro de envoltura, una clase de correo electrónico envoltura, envoltura de caché y sesión de clases (y sus interfaces asociadas) todo esto sin tocar en una prueba de unidad individual. Otro libro, .NET Domain Driven Design with C#: Problem, Design, Solution hace algo similar, y crea una clase base y un framework de repositorio con código primero antes de siquiera tocar el código "real".
Entiendo que debe probar la lógica real y la funcionalidad de sus clases de dominio. Creí que el código "no probar tuberías" solo se aplicaba al código que no escribiste (por ejemplo, clases incorporadas de .NET), pero lo que estoy leyendo parece indicar/sugerir que solo debes probar el código eso realmente tiene que ver con su aplicación y no con la fontanería que usted escribe para proporcionar una base.
¿Es esta una forma aceptable de aplicar TDD?
Ese sería el punto de prueba unitaria, sí. El objetivo de TDD, sin embargo, es dejar que tus pruebas impulsen el diseño. El diseño realmente mejora si primero escribe sus pruebas porque hace que desarrolle un código comprobable y debe pensar en el diseño de manera sistemática antes de comenzar a escribir. – tvanfosson
E imagina que, si hubieras seguido el enlace, me hubieras visto hablar detenidamente diciendo exactamente eso. –
Aunque realmente veo a TDD como un método más riguroso de especificaciones. –