Nuestro equipo tiene cientos de pruebas de integración que llegan a una base de datos y verifican los resultados. Tengo dos clases base para todas las pruebas de integración, una para las pruebas solo de recuperación y otra para las pruebas de creación/actualización/eliminación. La clase base de solo recuperación regenera la base de datos durante el TestFixtureSetup por lo que solo se ejecuta una vez por clase de prueba. La clase base CUD regenera la base de datos antes de cada prueba. Cada clase de repositorio tiene su propia clase de prueba correspondiente.Mejores prácticas de prueba de integración
Como se puede imaginar, todo esto lleva bastante tiempo (se acercan a 7-8 minutos para ejecutarse y crecer rápidamente). Hacer que esto se ejecute como parte de nuestro CI (CruiseControl.Net) no es un problema, pero la ejecución local lleva mucho tiempo y realmente prohíbe su ejecución antes de confirmar el código.
Mi pregunta es ¿existen algunas mejores prácticas para ayudar a acelerar la ejecución de este tipo de pruebas de integración?
No puedo ejecutarlos en la memoria (a la sqlite) porque utilizamos algunas funciones específicas de la base de datos (columnas calculadas, etc.) que no son compatibles con sqlite.
Además, todo el equipo tiene que poder ejecutarlos, por lo que ejecutarlos en una instancia local de SQL Server Express o algo podría ser propenso a errores a menos que las cadenas de conexión sean las mismas para esas instancias.
¿Cómo lo está logrando en su tienda y qué funciona bien?
Gracias!
+1 eso es más o menos lo que hacemos en mi trabajo. En nuestro CIS, las pruebas unitarias se ejecutan en cada prueba de checkin e integración una vez al día. – mezoid
donde trabajo ejecutamos las pruebas de integración en cada compilación. cuanto más frecuentemente ejecute las pruebas de integración, mejor. –
@Ken_Liu - seguro. A menudo se trata de equilibrar los ciclos de CPU disponibles en el servidor de CI contra el número de confirmaciones por momento. Esto variará para cada equipo/entorno de desarrollo. – grenade