Tengo una aplicación web JPA/Hibernate/Spring/Tomcat con caché de datos de segundo nivel habilitada por motivos de rendimiento. ¡Y el caché hace su trabajo muy bien!Hibernación Caché de datos de segundo nivel y prueba de integración/aceptación
También tengo un conjunto de pruebas Cucumber que agrega algunos datos de prueba directamente a la base de datos de la aplicación y luego realiza algunos pasos de Selenium. Por supuesto, falla ya que la aplicación no ve las actualizaciones debido a la memoria caché de segundo nivel.
Sé que puedo hacer una compilación especial para probar con la caché desactivada (pasando alguna propiedad booleana para el filtrado de Maven o similar) Pero hay muchas entidades anotadas @Cache, por lo que deshabilitar la caché hace que la aplicación falle con la excepción "Segundo el nivel de caché no está habilitado ".
Otro enfoque podría ser utilizar ehcache remoto para borrar la memoria caché o configurarla con cero vida de objeto o similar.
También puedo crear mis datos de prueba usando solo la interfaz de usuario de la aplicación, pero esto agrega complejidad innecesaria a los casos de prueba, así que prefiero escribirlos en la base de datos antes de ejecutar la prueba.
¿Alguien podría compartir su enfoque a las aplicaciones de prueba de integración con la memoria caché de datos de segundo nivel habilitada?
No todas, pero algunas de mis pruebas de BDD tienen los siguientes pasos: crear datos de prueba, hacer cosas de selenio, limpieza. Concordancia con la caja negra, pero crear y limpiar los datos usando UI es extremadamente difícil a veces y podría hacer que las pruebas dependieran unas de otras (si la UI relacionada con el guardado se rompe, todas las otras pruebas que necesitan algo se guardan también) – ike3
Sí, las pruebas dependientes fallarán, pero el objetivo principal - algo falla, se cumple. Y si completa los datos en DB directamente, entonces no se trata de una prueba de aceptación, en esencia, así no es como los usuarios finales trabajan con la aplicación. Y tales pruebas deberían ser más o menos gruesas. Si necesita más granos finos, este podría ser un mal lugar para el selenio. –