Tengo que escribir pruebas unitarias y pruebas de integración para un proyecto.
- ¿Deben colocarse todas las pruebas en una sola carpeta de pruebas ?
- ¿O deberían las pruebas unitarias y las pruebas de integración estar cada una en una carpeta de pruebas separada ?
- ¿O debería incluso ponerlos en proyectos separados ?
Si los mantengo juntos, ¿hay alguna ventaja o inconveniente con este enfoque?
architecture
unit-testing
integration-tests
Ahmed Ragheb
fuente
fuente
Respuestas:
En general: sí, debe colocar pruebas de integración y pruebas unitarias en diferentes carpetas. A menudo, los programadores no trazan una línea clara entre estos dos tipos de pruebas y simplemente escriben cualquier tipo de prueba que sea útil. Pero las pruebas de integración tienden a ser más lentas porque a menudo implican:
En contraste, una prueba unitaria se burlaría de cualquier operación costosa, por lo que las pruebas unitarias tienden a ejecutarse rápidamente (de hecho, la parte más lenta de ejecutar la prueba es a menudo el marco de prueba en sí).
Cuando un programador está trabajando en el sistema, está en un ciclo de edición-prueba. Cuanto más rápido reciban comentarios de prueba y cuanto más corto sea el ciclo, más productivos pueden ser. Entonces, allí solo queremos ejecutar pruebas importantes que se completen rápidamente. El conjunto de pruebas completo solo se ejecutará como parte de un proceso de control de calidad, por ejemplo, en un servidor CI.
Esto significa que los conjuntos de pruebas grandes deben clasificarse. ¿Solo podemos seleccionar pruebas unitarias para un componente en particular? ¿Podemos excluir las pruebas lentas? Una manera simple de hacer esto es mantener diferentes conjuntos de pruebas en diferentes directorios. Si solo tiene muy pocas pruebas, un solo directorio también estaría bien siempre que un programador pueda seleccionar fácilmente un subconjunto de pruebas.
Lo que sea que permita a un programador obtener retroalimentación rápidamente es bueno. El conjunto de pruebas más completo no importa si no se ejecuta regularmente.
Otras lecturas:
fuente