Jag är författaren till biblioteket inbäddade-databas-fjädertest som nämndes av @MartinVolejnik. Jag tycker att biblioteket ska uppfylla alla dina behov (PostgreSQL + Spring Boot + Flyway + integrationstestning). Jag är verkligen ledsen att du har några problem, så jag har skapat en enkel demo-app som visar användningen av biblioteket tillsammans med Spring Boot-ramverket. Nedan sammanfattade jag några grundläggande steg som du behöver göra.
Maven-konfiguration
Lägg till följande maven-beroende:
<dependency>
<groupId>io.zonky.test</groupId>
<artifactId>embedded-database-spring-test</artifactId>
<version>2.0.1</version>
<scope>test</scope>
</dependency>
Flyway-konfiguration
Lägg till följande egenskap i din programkonfiguration:
# 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
Se vidare till att du inte använder org.flywaydb.test.junit.FlywayTestExecutionListener
. Eftersom biblioteket har sin egen testkörningsavlyssnare som kan optimera databasinitiering och denna optimering har ingen effekt om FlywayTestExecutionListener
tillämpas.
Exempel
Ett exempel på testklass som visar användningen av den inbäddade databasen:
@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");
});
}
}