Tengo una clase Pruebas unitarias que requieren una configuración bastante amplia de la base de datos antes de que se puedan ejecutar los métodos de prueba individuales. Esta configuración lleva mucho tiempo: por razones que, afortunadamente, no son relevantes para la pregunta en cuestión, necesito llenar el DB programáticamente en lugar de un volcado de SQL.Configuración y desmontaje del estado de la base de datos compleja con Hibernate/Spring/JUnit
El problema que tengo es con el desmontaje. ¿Cómo puedo deshacer fácilmente todos los cambios realizados en la fase de configuración de db?
Actualmente estoy usando la compatibilidad con Hibernate + Spring Transactional Testing, por lo que mis métodos de prueba individuales están envueltos en transacciones.
Una solución sería realizar la configuración de db dentro de cada método de prueba, de modo que la configuración de db se retrotraiga automáticamente. Sin embargo, los métodos de prueba tardarían una eternidad en ejecutarse, ya que cada método necesitaría volver a preparar la base de datos.
¿Alguna otra idea? Básicamente, estoy buscando una forma de ejecutar mi configuración de bases de datos, ejecutar mis pruebas individuales (cada una envuelta en una transacción que se retrotrae después de la ejecución) y luego retrotraer la configuración inicial de bases de datos. ¿Alguna idea sobre cómo hacer que esto funcione de forma Hibernate/Primavera/Junio? ¿Existe un comando equivalente a "soltar todas las tablas" de Hibernate?
A veces me olvido de las opciones más simples. Puntos de bonificación para usted. –
Entonces, al aceptar esto como la solución, ¿eso significa que optó por la instalación/eliminación de db por prueba individual? –
De hecho fui con la configuración del db una vez para un conjunto de pruebas definidas en la misma clase usando un método estático @BeforeClass Junit. Pero sería bastante fácil hacer en base por prueba con un método @Before JUnit. –