Je suis l'auteur de la bibliothèque embedded-database-spring-test mentionnée par @MartinVolejnik. Je pense que la bibliothèque devrait répondre à tous vos besoins (PostgreSQL + Spring Boot + Flyway + tests d'intégration). Je suis vraiment désolé que vous rencontriez des problèmes, j'ai donc créé une application de démonstration simple qui illustre l'utilisation de la bibliothèque avec le framework Spring Boot. Ci-dessous, j'ai résumé quelques étapes de base que vous devez suivre.
Configuration Maven
Ajoutez la dépendance Maven suivante :
<dependency>
<groupId>io.zonky.test</groupId>
<artifactId>embedded-database-spring-test</artifactId>
<version>2.0.1</version>
<scope>test</scope>
</dependency>
Configuration des voies de migration
Ajoutez la propriété suivante à la configuration de votre application :
# 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
De plus, assurez-vous de ne pas utiliser org.flywaydb.test.junit.FlywayTestExecutionListener
. Parce que la bibliothèque a son propre écouteur d'exécution de test qui peut optimiser l'initialisation de la base de données et cette optimisation n'a aucun effet si le FlywayTestExecutionListener
est appliqué.
Exemple
Un exemple de classe de test démontrant l'utilisation de la base de données embarquée :
@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");
});
}
}