Práctica
Se toma un tiempo para aprender cómo escribir pruebas unitarias decente. Un proyecto difícil (más como proyectos) no es nada extraño.
El libro xUnit Test Patterns recomendado ya es bueno, y he oído cosas buenas sobre el libro que está leyendo actualmente.
En cuanto a los consejos generales, depende de lo que fue duro con sus pruebas. Si se rompieron a menudo, pueden no ser pruebas unitarias, y más aún pruebas de integración. Si fueran difíciles de configurar, el SUT (Sistema Bajo Prueba) podría mostrar signos de ser demasiado complejo y necesitaría una mayor modularización. La lista continua.
Algunos consejos que defiendo están siguiendo la regla AAA.
Organizar, actuar y afirmar. Cada prueba debe seguir esta fórmula. Esto hace que la prueba sea legible y fácil de mantener siempre y cuando se rompa.
Diseño sigue siendo importante
practico TDD, pero antes de que se escribió ningún código agarro una pizarra y garabatos de distancia. Mientras TDD permite que su código evolucione, algunos diseños iniciales son siempre un beneficio. Entonces al menos tienes un punto de partida, desde aquí tu código puede ser impulsado por las pruebas que escribas.
Si estoy llevando a cabo una tarea particularmente difícil, hago un prototipo. Olvídese de TDD, olvídese de las mejores prácticas, simplemente descifre algún código. Obviamente, esto no es código de producción, pero proporciona un punto de partida. A partir de este prototipo, pienso en el sistema real y en las pruebas que necesito.
Echa un vistazo a Google Testing Blog - este fue el punto de inflexión para mí mismo al iniciar TDD.Los artículos de Misko (y el sitio - el código Guide to Testable especialmente) son excelentes, y deben apuntar en la dirección correcta.
Para enmendar un ejemplo, un día decidí que el nombre de una propiedad en mi código era incorrecto, así que lo cambié a uno mejor. Esta propiedad se usó en aproximadamente 30 pruebas diferentes, así que tuve que pasar por cada prueba y cambiarla manualmente, eso lleva mucho tiempo. Estoy buscando algunos hits/tips prácticos, como resharper, usando la palabra clave var, etc. –
@Lee Tevail: ¿estás diciendo que (a) tu IDE no tiene búsqueda y reemplazo globales y (b) TDD es la causa raíz de tu IDE? ¿tan pobre? –
Tampoco, no odio TDD. Estoy buscando formas de hacer las cosas de manera más eficiente. –