मेरे पास एकीकरण परीक्षण है जो इनमेरी डेटाबेस पर शीर्ष पर निष्पादित किया जाता है। प्रत्येक परीक्षा के हस्ताक्षर और अधिक या कम इस तरह दिखता है:@SpringBootTest @Sql के साथ: स्क्रिप्ट निष्पादन और संदर्भ प्रारंभिकरण का आदेश
spring:
jpa:
hibernate:
ddl-auto: create-drop
मैं उम्मीद एसक्यूएल स्क्रिप्ट के प्रारंभ के बाद निष्पादित किया जाना है:
@RunWith(SpringRunner.class)
@SpringBootTest
@Sql("/clean-data-in-all-tables.sql")
public class SomeTest {
@Test
public void shouldDoSomehting() {}
}
परीक्षण संदर्भ प्रारंभ डीबी स्कीमा हाइबरनेट द्वारा निर्मित है के दौरान संदर्भ और डीबी स्कीमा पीढ़ी के बाद। हालांकि कुछ मामलों में clean-data-in-all-tables.sql
स्कीमा पीढ़ी से पहले निष्पादित किया गया है और यह विफल रहता है क्योंकि यह उन तालिकाओं की अपेक्षा करता है जो अभी तक नहीं बनाए गए थे।
मेरे द्वारा समझाए गए तरीके से 500 से अधिक परीक्षण लिखे गए हैं और जब तक मैंने कुछ और समान परीक्षण नहीं जोड़े, तब तक वे सभी अच्छी तरह से काम कर रहे थे।
टेस्ट विफल हो जाते हैं जब मैं उन्हें ग्रैडल या इंटेलिजे के माध्यम से एक साथ निष्पादित करता हूं। ध्यान दें कि असफल परीक्षण ऐसे परीक्षण नहीं हैं जिन्हें हाल ही में जोड़ा गया था। यह पुराने परीक्षण हैं जिन्हें मैंने जोड़ा है उससे पूरी तरह से असंबंधित हैं। यह भी अजीब बात यह है कि विफल परीक्षण परीक्षण अच्छी तरह से काम करते हैं अगर मैं उन्हें IntelliJ के माध्यम से एक चलाता हूं।
यह वसंत-बूट की एक बग की तरह दिखता है हालांकि मैं अभी भी इसे हल करने के लिए एक रास्ता खोजने का प्रयास करता हूं। साथ ही मैंने इस मुद्दे को हल करने के लिए कई चीजों की कोशिश की, हालांकि उनमें से कोई भी सहायक नहीं था।
कृपया अपने विचारों को साझा करें कि क्या मदद कर सकता है और मेरे कोड में क्या गलत हो सकता है।
अद्यतन: मिले वैकल्पिक हल: create
करने के लिए create-drop
से spring.jpa.hibernate.ddl-auto
बदलते समस्या का हल।
लेकिन सवाल अभी भी खुला है इस तरह के अजीब व्यवहार का कारण क्या है?
क्या आपने कोई नई कॉन्फ़िगरेशन जोड़ दी है? SpringBootTest एक परीक्षण रूट से एक प्रोजेक्ट रूट तक कॉन्फ़िगरेशन की तलाश में है। –
नहीं, मैंने कोई नई कॉन्फ़िगरेशन शुरू नहीं की है और मैंने मौजूदा कॉन्फ़िगरेशन को नहीं बदला है। –