Jeg er forfatteren af embedded-database-spring-test-biblioteket, der blev nævnt af @MartinVolejnik. Jeg synes, biblioteket skal opfylde alle dine behov (PostgreSQL + Spring Boot + Flyway + integrationstest). Jeg er virkelig ked af, at du har nogle problemer, så jeg har lavet en simpel demo-app, der demonstrerer brugen af biblioteket sammen med Spring Boot framework. Nedenfor har jeg opsummeret nogle grundlæggende trin, som du skal gøre.
Maven-konfiguration
Tilføj følgende maven-afhængighed:
<dependency>
<groupId>io.zonky.test</groupId>
<artifactId>embedded-database-spring-test</artifactId>
<version>2.0.1</version>
<scope>test</scope>
</dependency>
Flyway-konfiguration
Tilføj følgende egenskab til din applikationskonfiguration:
# 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
Sørg desuden for, at du ikke bruger org.flywaydb.test.junit.FlywayTestExecutionListener
. Fordi biblioteket har sin egen testudførelseslytter, der kan optimere databaseinitialisering, og denne optimering har ingen effekt, hvis FlywayTestExecutionListener
er anvendt.
Eksempel
Et eksempel på testklasse, der demonstrerer brugen af den indlejrede database:
@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");
});
}
}