Soy el autor de la biblioteca de prueba de resorte de base de datos integrada que mencionó @MartinVolejnik. Creo que la biblioteca debería satisfacer todas sus necesidades (PostgreSQL + Spring Boot + Flyway + pruebas de integración). Lamento mucho que esté teniendo problemas, así que creé una aplicación de demostración simple que demuestra el uso de la biblioteca junto con el marco Spring Boot. A continuación, resumí algunos pasos básicos que debe seguir.
Configuración Maven
Agregue la siguiente dependencia experta:
<dependency>
<groupId>io.zonky.test</groupId>
<artifactId>embedded-database-spring-test</artifactId>
<version>2.0.1</version>
<scope>test</scope>
</dependency>
Configuración de la ruta migratoria
Agregue la siguiente propiedad a la configuración de su aplicación:
# Sets the schemas managed by Flyway -> change the xxx value to the name of your schema
# flyway.schemas=xxx // for spring boot 1.x.x
spring.flyway.schemas=xxx // for spring boot 2.x.x
Además, asegúrese de no utilizar org.flywaydb.test.junit.FlywayTestExecutionListener
. Debido a que la biblioteca tiene su propio oyente de ejecución de prueba que puede optimizar la inicialización de la base de datos y esta optimización no tiene efecto si FlywayTestExecutionListener
se aplica.
Ejemplo
Un ejemplo de clase de prueba que demuestra el uso de la base de datos incrustada:
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureEmbeddedDatabase
public class SpringDataJpaAnnotationTest {
@Autowired
private PersonRepository personRepository;
@Test
public void testEmbeddedDatabase() {
Optional<Person> personOptional = personRepository.findById(1L);
assertThat(personOptional).hasValueSatisfying(person -> {
assertThat(person.getId()).isNotNull();
assertThat(person.getFirstName()).isEqualTo("Dave");
assertThat(person.getLastName()).isEqualTo("Syer");
});
}
}