Saya penulis perpustakaan tes-pegas-database-embedded yang disebutkan oleh @MartinVolejnik. Saya pikir perpustakaan harus memenuhi semua kebutuhan Anda (PostgreSQL + Spring Boot + Flyway + pengujian integrasi). Saya sangat menyesal bahwa Anda mengalami beberapa masalah, jadi saya telah membuat aplikasi demo sederhana yang menunjukkan penggunaan perpustakaan bersama dengan kerangka Boot Musim Semi. Di bawah ini saya rangkum beberapa langkah dasar yang perlu Anda lakukan.
Konfigurasi pakar
Tambahkan ketergantungan maven berikut:
<dependency>
<groupId>io.zonky.test</groupId>
<artifactId>embedded-database-spring-test</artifactId>
<version>2.0.1</version>
<scope>test</scope>
</dependency>
Konfigurasi jalur terbang
Tambahkan properti berikut ke konfigurasi aplikasi Anda:
# 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
Selanjutnya, pastikan Anda tidak menggunakan org.flywaydb.test.junit.FlywayTestExecutionListener
. Karena perpustakaan memiliki pendengar eksekusi pengujian sendiri yang dapat mengoptimalkan inisialisasi database dan pengoptimalan ini tidak berpengaruh jika FlywayTestExecutionListener
diterapkan.
Contoh
Contoh kelas pengujian yang mendemonstrasikan penggunaan basis data tertanam:
@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");
});
}
}