He leído muchas preguntas y respuestas sobre TDD y pruebas unitarias en SO, pero no he encontrado nada que responda a eso: ¿por dónde empiezo?Iniciar un proyecto TDD desde cero
Yo y el equipo ya hemos hecho un par de proyectos en los que hemos adoptado el uso de pruebas unitarias, para nuestro código ... pero codifica primero y luego prueba unitaria. En algún punto del proceso de desarrollo, se hizo bastante natural escribir primero la prueba y luego el código, lo que nos llevó a un estilo más TDD.
Ahora nos gustaría dar el siguiente paso y tratar de comenzar un nuevo proyecto con TDD desde el principio. Aquí está el problema ... ¿por dónde empezar? ¿Cuál es la primera prueba que escribiría cuando no tenga ningún código?
Digamos, solo para tener un contexto en el que pensar, que tengo que desarrollar una aplicación de Internet, centrada en el documento, con un poco de flujo de trabajo y ... algo más. Pero comencemos desde el principio: primero, quiero crear una página simple que liste todo el documento (metadatos) almacenado en una tabla en un DB (bastante simple, ¿eh?). ¿Cuál es la primera prueba que escribiría? Digamos que estoy usando Hibernate para acceder al db ... ¿probaría el método ipotético getAllDocuments()? Pero, ¿debería usar un objeto simulado para sustituir a Hibernate? Entonces, ¿qué estoy probando?
Estoy un poco confundido aquí ... además el getAlDocuments() probablemente nunca será un método de producción ... toda la colección de documentos será ordenada y filtrada por algo ... ¿tiene sentido? Cualquier sugerencia será apreciada
Editado:
Después de leer sus respuestas (y el hilo similar en http://programmers.stackexchange.com) Vengo con una mejor visión de TDD, pero todavía tengo un dubt.
Siempre pensé que TDD se trata de hacer la prueba de unidad primero ... nunca pensé en la prueba de extremo a extremo. Pero déjame preguntarte: TDD dice que tienes que escribir una prueba y ver un error de compilación; luego creas clase y método y obtienes una falla de prueba; luego implementa el método y pasa la prueba. No puede escribir código hasta que falle una prueba; no puede escribir otra prueba hasta que pase todo el examen. ¿Estoy aquí?
¿Cómo puedo hacer una prueba de extremo a extremo como mi primera prueba? Debería escribir todo el código, en toda la capa, para dejar pasar esa prueba. Pero luego tendré un montón de clases y métodos, todos probados por mi prueba integral (¿no debería llamarlo prueba de integración?). Esto significa que ya no necesitaré la prueba de unidad, porque ya tengo una prueba que cubre mi código. Y no puedo escribir una prueba que ya haya pasado, está en contra de la práctica de TDD.
ayuda a entender este nuevo paso por delante favor
Normalmente empiezo escribiendo las pruebas para el componente del autocargador. Y luego para cada clase agrego. – hakre
http://programmers.stackexchange.com/questions/84252/tdd-what-happens-before-the-first-unit-test/84255#84255 Ayer se hizo la misma pregunta. –