Cuando realiza pruebas de integración con solo su capa de acceso a datos o la mayoría de la pila de aplicaciones. ¿Cuál es la mejor manera de evitar que las pruebas múltiples entren en conflicto si se ejecutan en la misma base de datos?Pruebas de integración de base de datos
Respuesta
Transacciones.
Lo que el rubí en los carriles marco de prueba de unidad hace es la siguiente:
Load all fixture data.
For each test:
BEGIN TRANSACTION
# Yield control to user code
ROLLBACK TRANSACTION
End for each
Esto significa que
- cualquier cambio hace que su prueba a la base de datos no afectará a otros hilos, mientras que es in- progreso
- Los datos de la siguiente prueba no están contaminados por las pruebas anteriores
- Esto es aproximadamente un billón de veces más rápido que la recarga manual de datos para cada prueba.
Por mi parte, creo que esto está muy bien
Para aplicaciones de bases de datos simples, me resulta valioso utilizar SQLite. Le permite tener una base de datos única e independiente para cada prueba.
Sin embargo, solo funciona si utiliza una funcionalidad SQL genérica simple o puede ocultar fácilmente las pequeñas diferencias entre SQLite y su sistema de base de datos de producción detrás de una clase, pero siempre he encontrado que es bastante fácil en SQL aplicaciones que he desarrollado.
quería aceptar respuestas tanto Orion Edwards gratuito de ñus y pero no me dejaron. La razón por la que quería hacer esto es que había llegado a la conclusión de que estas eran las dos formas principales de hacerlo, pero que elegir debía depender del caso individual (principalmente el tamaño de la base de datos).
También ejecute las pruebas en diferentes momentos, para que no afecten el rendimiento o la validez de los demás.
Solo para agregar a la respuesta de Wildebeest también usé HSQLDB para hacer una prueba de tipo similar donde cada prueba obtiene una instancia limpia de la base de datos.
Si bien no es tan inteligente como el marco de prueba de la unidad Rails en una de las otras respuestas aquí, la creación de datos distintos por prueba o grupo de pruebas es otra forma de hacerlo. El nivel de fastidio con esta solución depende de la cantidad de casos de prueba que tenga y cuán dependientes estén uno del otro. La tediosidad será cierta si tiene una base de datos por prueba o un grupo de pruebas dependientes.
Al ejecutar el banco de pruebas, usted carga los datos al inicio, ejecuta el conjunto de pruebas, descarga/compara los resultados asegurándose de que el resultado real cumpla con el resultado esperado. Si no, haz el ciclo nuevamente. Cargar, ejecutar suite, descargar/comparar.
- 1. ¿Pruebas unitarias o pruebas de integración?
- 2. Pruebas de integración con MongoDB?
- 3. Volver al inicio de la base de datos después de las pruebas de integración (Selenium)
- 4. Pruebas de integración Servicios de WCF encadenados con base de datos de prueba
- 5. Pruebas de integración de rieles
- 6. Pruebas de integración vs. Pruebas unitarias
- 7. Burlarse de las pruebas de integración
- 8. Pruebas de integración con blanco
- 9. Pruebas de integración con Authlogic?
- 10. ¿Cómo ejecutar pruebas de integración?
- 11. Pruebas de integración para fullCalendar
- 12. ¿Cómo automatizar las pruebas de integración?
- 13. Pruebas unitarias: base de datos y dispositivos
- 14. Integración de pasarela en una base de datos de producción
- 15. Integración continua y administración de base de datos
- 16. Cómo iniciar una instancia de postgresql para pruebas de integración
- 17. Maven: pruebas de integración por separado de las pruebas unitarias
- 18. ¿Separa las pruebas unitarias de sus pruebas de integración?
- 19. Spring: unidad y pruebas de integración
- 20. ¿Cómo ejecuto las pruebas de integración de Rails sin eliminar los contenidos de la base de datos?
- 21. Uso de integración continua para implementar en una máquina virtual para ejecutar pruebas de integración
- 22. Pruebas unitarias vs pruebas de integración con Spring
- 23. ¿Cómo organizar las pruebas de integración?
- 24. ¿Cómo hacer las pruebas de integración?
- 25. Iniciando Grails durante las pruebas de integración
- 26. Pruebas de integración en CakePHP 2.0
- 27. Pruebas de integración con Hibernate Envers
- 28. Rails rspec y omniauth (pruebas de integración)
- 29. ¿Cómo realizar pruebas de integración en PHP?
- 30. ¿Pruebas de integración Rspec sin pepino?
Siempre encuentro un problema en stackoverflow. Es el problema de elección cuando realmente quieres decir que ambos son buenos. Supongo que si ambos son igualmente útiles, entonces serán votados por números similares, así que mantente cerca de la cima. Deja que la gente decida :) –