मैं एम्बेडेड-डेटाबेस-स्प्रिंग-टेस्ट लाइब्रेरी का लेखक हूं जिसका उल्लेख @MartinVolejnik ने किया था। मुझे लगता है कि पुस्तकालय को आपकी सभी जरूरतों को पूरा करना चाहिए (पोस्टग्रेएसक्यूएल + स्प्रिंग बूट + फ्लाईवे + एकीकरण परीक्षण)। मुझे वास्तव में खेद है कि आपको कुछ परेशानी हो रही है, इसलिए मैंने एक साधारण डेमो ऐप बनाया है जो स्प्रिंग बूट फ्रेमवर्क के साथ लाइब्रेरी के उपयोग को प्रदर्शित करता है। नीचे मैंने कुछ बुनियादी चरणों का सारांश दिया है जो आपको करने की आवश्यकता है।
मावेन कॉन्फ़िगरेशन
निम्नलिखित मावेन निर्भरता जोड़ें:
<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");
});
}
}