6

बनाता है मेरे पास विशेष स्कीमा में संग्रहीत मेरी डेटा परत में कुछ इकाइयां हैं I उदाहरण के लिए:वसंत बूट। @DataJpaTest H2 एम्बेडेड डेटाबेस स्कीमा

@Entity 
@Table(name = "FOO", schema = "DUMMY") 
public class Foo {} 

मैं अपनी डेटा परत के एकीकरण परीक्षण के लिए H2 एम्बेडेड डेटाबेस सेट अप करने का प्रयास कर रहा हूं। मैं H2 एम्बेडेड डेटाबेस को स्वचालित रूप से कॉन्फ़िगर करने के लिए अपने परीक्षणों के लिए @DataJpaTest एनोटेशन का उपयोग कर रहा हूं। हालांकि, तालिकाओं का निर्माण विफल रहता है क्योंकि स्कीमा DUMMY डीबी प्रारंभ में नहीं बनाया गया है।

परीक्षण मामलों में तालिकाओं के निर्माण से पहले स्कीमा बनाने के तरीके पर कोई विचार?

मैंने @ एसक्यूएल का उपयोग करने की कोशिश की है (कथन = "स्कीमा बनाएं अगर डिममी नहीं है") लेकिन सफल नहीं हुआ।

इसके अलावा, मैं TestPropertySource("classpath:test.properties") के साथ एक साथ मेरी test.properties फ़ाइल में spring.datasource.url = jdbc:h2:mem:test;INIT=CREATE SCHEMA IF NOT EXISTS DUMMY स्थापित करने के लिए कोशिश की है, लेकिन वह भी काम नहीं किया।

उत्तर

4

मैं एक ही मुद्दा था, मैं here पाया जा सकता है सामग्री के साथ schema.sql (संसाधन फ़ोल्डर में) बनाने

CREATE SCHEMA IF NOT EXISTS <yourschema>

प्रलेखन द्वारा हल करने में कामयाब रहे, लेकिन imho वास्तविक उदाहरण की कमी कर बहुत जटिल। चेतावनी: यह स्क्रिप्ट सामान्य (परीक्षण नहीं) वातावरण के भीतर भी निष्पादित की जाती है।

अनिवार्य नहीं है, लेकिन अच्छा अभ्यास, केवल जांच का दायरा

<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <scope>test</scope> 
</dependency> 
+0

उत्तर के लिए धन्यवाद। यह काम करता हैं! बीटीडब्ल्यू, निर्भरता के दायरे के बारे में अच्छी पकड़। – StasKolodyuk

+0

इसके अलावा, मुझे इस समस्या के लिए एक और समाधान मिला है, बस इसे यहां रखना भूल गया है। – StasKolodyuk

+0

यह पता चला कि आप केवल 'src/test/resource' के अंतर्गत' schema.sql' डाल सकते हैं ताकि इसे केवल परीक्षणों के लिए लागू किया जा सके – StasKolodyuk

1

में h2 निर्भरता को जोड़ने मैं एक वैकल्पिक हल मिल गया है संघर्ष के कुछ घंटों के बाद।

आप spring.jpa.properties.hibernate.default_schema = DUMMY को अपने application.properties में परिभाषित कर सकते हैं।

और फिर अपने test.properties में spring.jpa.properties.hibernate.default_schema = सेट और इस तरह से स्कीमा डमी नहीं बनाया जाएगा में @TestPropertySource("classpath:test.properties")

तो साथ साथ उपयोग करते हैं, और संस्थाओं डिफ़ॉल्ट स्कीमा में बनाया जाएगा।

संबंधित मुद्दे