Para que una prueba unitaria sea buena se deben cumplir los siguientes requisitos:
- Automatizable: no debería requerirse una intervención manual. Esto es especialmente útil para integración continua.
- Completas: deben cubrir la mayor cantidad de código.
- Repetibles o Reutilizables: no se deben crear pruebas que sólo puedan ser ejecutadas una sola vez. También es útil para integración continua.
- Independientes: la ejecución de una prueba no debe afectar a la ejecución de otra.
- Profesionales: las pruebas deben ser consideradas igual que el código, con la misma profesionalidad, documentación, etc.
Se recomienda seguirlos o de lo contrario las pruebas pierden parte de su función.Pero no es obligatorio.
Los beneficios de escribir pruebas unitarias son muchos:
- El código es menos frágil.
- Hacer cambios es más seguro y fácil.
- Podemos integrar continuamente de manera rápida.
- Podemos hacer refactors agresivamente.
- Tenemos una documentación viva de nuestros APIs.
- Nos permite pensar desde el punto de vista de la interfaz y no de la implementación.
- Los errores están más acotados y son más fáciles de localizar: dado que tenemos pruebas unitarias que pueden desenmascararlos.