Soy bastante nuevo en el mundo de las pruebas unitarias, y esta semana decidí agregar cobertura de prueba para mi aplicación existente.¿Nuevo en pruebas unitarias, cómo escribir grandes pruebas?
Esta es una gran tarea, sobre todo por la cantidad de clases para evaluar, pero también porque escribir pruebas es nuevo para mí.
Ya he escrito pruebas para varias clases, pero ahora me pregunto si lo estoy haciendo bien.
Cuando estoy escribiendo pruebas para un método, tengo la sensación de volver a escribir por segunda vez lo que ya escribí en el método mismo.
Mis pruebas parecen tan estrictamente relacionadas con el método (probar todas las rutas de códigos, esperando que algunos métodos internos se llamen varias veces, con ciertos argumentos), que parece que si alguna vez refactorizo el método, las pruebas fallarán incluso si el comportamiento final del método no cambió.
Esto es solo una sensación, y como dije antes, no tengo experiencia en las pruebas. Si algunos probadores más experimentados pudieran darme consejos sobre cómo escribir pruebas excelentes para una aplicación existente, eso sería muy apreciado.
Editar: Me gustaría agradecer a Stack Overflow, tuve excelentes entradas en menos de 15 minutos que respondieron más horas de lectura en línea que acabo de hacer.
Muchas gracias, su respuesta fue la más completa. Ahora entiendo mejor para qué son realmente los objetos falsos: no necesito afirmar cada llamada a otros métodos, solo los relevantes. Tampoco necesito saber CÓMO se hacen las cosas, pero sí lo hacen correctamente. – pixelastic
Respetuosamente pienso que lo estás haciendo mal. Las pruebas unitarias son sobre el flujo de ejecución de código (prueba de caja blanca). La prueba de caja negra (lo que sugiere) suele ser la técnica utilizada en las pruebas funcionales (sistema y prueba de integración). – Wes