Tengo alrededor de 100 pruebas unitarias y con una cobertura de% 20, que estoy tratando de aumentar la cobertura y también este es un proyecto en desarrollo, así que sigue agregando nuevas pruebas.¿Cómo lidiar con las pruebas unitarias de larga ejecución?
Actualmente, realizar mis pruebas después de que cada compilación no es posible demoran aproximadamente 2 minutos.
prueba incluye:
- de archivos de lectura de las carpetas de prueba (estilo basado en datos para simular algunas cosas HTTP)
- Hacer peticiones HTTP reales a un servidor web local (esto es un gran dolor para simulacro, así que no lo haré)
- No todas son pruebas unitarias, pero también hay clases de subprocesos múltiples bastante complicadas que deben ser probadas y yo pruebo el comportamiento general de la prueba. Que se puede considerar como Prueba funcional, pero también se debe ejecutar cada vez.
La mayor parte de la funcionalidad requiere leer HTTP, hacer TCP, etc. No puedo cambiarlos porque esa es toda la idea del proyecto, si cambio estas pruebas será inútil probar cosas.
Además, no creo tener las herramientas más rápidas para ejecutar las pruebas unitarias. Mi configuración actual usa VS TS con Gallio y nUnit como marco. Creo que VS TS + Gallio es un poco más lento que otros también.
¿Qué recomiendas para solucionar este problema? Quiero ejecutar pruebas unitarias luego de que cada pequeño cambio de BTU, actualmente este problema está interrumpiendo mi flujo.
más aclaraciones Editar:
código es altamente acoplado! Lamentablemente, cambiar es como un gran proceso de refracción. Y hay un síndrome de huevo de gallina en el que necesito pruebas unitarias para refactorizar un código tan grande, pero no puedo tener más pruebas de unidad si no lo refactorizo :)
Código altamente acoplado no me permite para dividir las pruebas en trozos más pequeños. Además, no pruebo cosas privadas, es una elección personal, que me permite desarrollarme mucho más rápido y aun así obtener una gran cantidad de beneficios.
Y puedo confirmar que todas las pruebas unitarias (con el aislamiento adecuado) son bastante rápidas en realidad, y no tengo un problema de rendimiento con ellas.
más aclaraciones:
código es altamente acoplado! Lamentablemente, cambiar es como un gran proceso de refracción. Y hay un síndrome de huevo de gallina en el que necesito pruebas unitarias para refactorizar un código tan grande, pero no puedo tener más pruebas de unidad si no lo refactorizo :)
Código altamente acoplado no me permite para dividir las pruebas en trozos más pequeños. Además, no pruebo cosas privadas, es una elección personal, que me permite desarrollarme mucho más rápido y aun así obtener una gran cantidad de beneficios.
Y puedo confirmar que todas las pruebas unitarias (con el aislamiento adecuado) son bastante rápidas en realidad, y no tengo un problema de rendimiento con ellas.
Así que supongo que el movimiento correcto sería: refactorizar el código de una manera en la que no tengo tanto acoplamiento. ¿Luego ejecutas pruebas funcionales diariamente pero ejecutas pruebas unitarias después de cada compilación? –
También he actualizado la pregunta con respecto a su respuesta. –
Incluso podría ejecutar todas las pruebas funcionales en cada registro con integración continua. Cuando estoy escribiendo pruebas unitarias, tiendo a ejecutar las locales con respecto a las que estoy trabajando con mucha frecuencia, luego series más grandes con menos frecuencia y todo antes de comprometerme. –