Lo principal es recordar que las pruebas unitarias son esencialmente mini especificaciones. Esto significa que el énfasis siempre debe estar en la legibilidad.
En primer lugar, esto significa que los nombres deben comunicar claramente lo que se está probando y lo que se afirma.
Sin embargo, en segundo lugar, lo que a veces se olvida, es que como especificaciones deberían estar haciendo exactamente eso: especificar el comportamiento. Es decir, las pruebas unitarias no deben contener lógica, o potencialmente caen en la trampa de repetir la funcionalidad del programa en lugar de probarlo.
A veces, las pruebas involucrarán objetos que son complejos de configurar, debe esforzarse por mantener esta lógica de configuración separada de sus pruebas utilizando algo como una madre de objeto o un generador de datos de prueba .
Terminaré con algunas recomendaciones de libros:
xUnit Test Patterns: Refactoring Test Code: Excelente libro, algunos dicen que es un poco seco, pero no lo creo. Entra en muchos detalles sobre muchas formas diferentes de organizar las pruebas y cómo mantenerlas mantenibles. Relevante si está usando algo como NUnit, etc.
El arte de las pruebas unitarias: con ejemplos en .Net : el mejor libro sobre el meollo de la escritura y el mantenimiento de las pruebas. A pesar de ser realmente nuevo, creo que las secciones de burla ya están un poco anticuadas, ya que la sintaxis AAA ahora es bastante estándar en lugar de simplemente otra forma de hacerlo.
Creciente software orientado a objetos, guiado por pruebas : ¡este libro es simplemente increíble! Con mucho, el mejor libro de pruebas unitarias y el único avanzado que coloca a las pruebas unitarias como un ciudadano de primera clase en el proceso de diseño. Estaba leyendo esto cuando era una versión beta pública y lo he estado recomendando desde entonces. Excelente ejemplo trabajado del mundo real utilizado en todo el libro. Sin embargo, recomendaría leer el libro de Roy primero.