私は@MartinVolejnikによって言及されたembedded-database-spring-testライブラリの作成者です。ライブラリはすべてのニーズ(PostgreSQL + Spring Boot + Flyway +統合テスト)を満たす必要があると思います。ご不便をおかけして申し訳ございません。ライブラリをSpringBootフレームワークと一緒に使用する方法を示す簡単なデモアプリを作成しました。以下に、実行する必要のあるいくつかの基本的な手順を要約しました。
Maven構成
次のMaven依存関係を追加します:
<dependency>
<groupId>io.zonky.test</groupId>
<artifactId>embedded-database-spring-test</artifactId>
<version>2.0.1</version>
<scope>test</scope>
</dependency>
フライウェイ構成
次のプロパティをアプリケーション構成に追加します。
# 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
さらに、org.flywaydb.test.junit.FlywayTestExecutionListener
を使用しないようにしてください。 。ライブラリにはデータベースの初期化を最適化できる独自のテスト実行リスナーがあり、FlywayTestExecutionListener
の場合、この最適化は効果がないためです。 適用されます。
例
組み込みデータベースの使用法を示すテストクラスの例:
@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");
});
}
}