2016-06-03 7 views
5

मेरे पास एक ऐसा एप्लिकेशन है जिसके लिए प्रोड/टेस्ट/क्यूए डेटाबेस केवल ओरेकल है। इसके अलावा, मुझे एसक्यूएल प्रश्नों को ओरेकल-विशिष्ट होने पर संदेह है। और दुर्भाग्य से, इस एप्लिकेशन में कोई यूनिट परीक्षण नहीं है।मैवेन में यूनिट परीक्षण चलाने के लिए ओरेकल का एक एम्बेडेड डेटाबेस के रूप में उपयोग कैसे करें?

परिणामस्वरूप, मैं विशेष रूप से खोज घटक के बारे में यूनिट परीक्षणों को कार्यान्वित करना चाहता हूं (जो तालिका निर्माण सहित स्पष्ट रूप से ओरेकल संचालन के बहुत सारे प्रदर्शन करता है)।

आमतौर पर, जब मैं परीक्षण चलाने के लिए चाहता हूं, तो मैं एक एम्बेडेड डेटाबेस (उदाहरण के रूप में एचएसक्यूएल) शुरू करता हूं, उस डेटाबेस पर अपने परीक्षण चलाता हूं, और जब मेरे परीक्षण समाप्त होते हैं तो इसे दूर कर देते हैं।

इस एप्लिकेशन के मानकीकरण स्तर पर आत्मविश्वास की कमी के कारण, मैं ओरेकल डेटाबेस पर परीक्षण चलाने के लिए पसंद करूंगा। नतीजतन, मैं अपने परीक्षण शुरू होने पर ऑरैकल डेटाबेस शुरू करना चाहता हूं, इसे कुछ टेस्ट डेटन से भरें और इसे टेस्ट एंड पर रोक दें। मैवेन संदर्भ में मैं इसे कैसे कर सकता हूं?

+2

संकेत: शब्द के बारे में सटीक रहें। मुझे लगता है कि आईटी पेशेवरों का विशाल बहुमत एक परीक्षण पर विचार नहीं करेगा जिसके लिए एक चल रहे डेटाबेस की आवश्यकता है ... ** ** ** ** परीक्षा के लिए। बेहतर इसे एक कार्यात्मक या एकीकरण परीक्षण कहते हैं; बस आप के चारों ओर हर किसी के लिए गलत धारणाओं को रोकने के लिए। सही ** इकाई ** परीक्षण संकलन समय पर चलते हैं; उन्हें केवल आपके संकलित कक्षाओं और जुनीट की आवश्यकता है - कुछ एम्बेडेड डेटाबेस, फ़ाइल सिस्टम, वेब सेवा, सॉकेट, ... – GhostCat

उत्तर

1

मैं समझता हूँ कि आप ओरेकल चाहते हैं, लेकिन आप भी ओरेकल मोड झंडा

jdbc:h2:~/test;MODE=Oracle 

मैं अपनी परियोजनाओं के अधिकांश में एक ही जरूरत है का उपयोग कर h2 के साथ की कोशिश कर सकते हैं, और यह मैंने पाया ओरेकल के सबसे करीब है। आप कुछ लापता कार्यों के लिए उपनाम परिभाषित कर सकते हैं।

+0

आप कैसे 'dense_rank' उपनाम करते हैं? – Stephan

+0

मुझे नहीं लगता कि यह किया जा सकता है, क्योंकि dense_rank मानक SQL प्रारूप का पालन नहीं करता है (यानी: DENSE_RANK() ओवर (भाग द्वारा ...)): https://groups.google.com/forum/#! विषय/h2-डेटाबेस/OJkQaoWFHeM – alexbt

2

आप पूर्ण ओरेकल उदाहरण सहित मेवेन लाइफसाइकिल के दौरान कोई भी एप्लिकेशन शुरू करने के लिए exec-maven-plugin का उपयोग कर सकते हैं। हालांकि, आपको अभी भी इसे निर्माता, आदि पर स्थापित करने की आवश्यकता है जो समाधान को थोड़ा सा जटिल बनाता है।

तो क्या हम एक और परियोजना में किया है:

  1. Maven संपत्ति के रूप में एक अनूठा निर्माण नाम (डिफ़ॉल्ट स्थानीय के लिए उपयोगकर्ता नाम को परिभाषित करें बनाता है; सीआई -D के माध्यम से इस प्रदान करते हैं, जैसे, बांस पर आप शामिल कर सकते हैं योजना कुंजी और संख्या)
  2. कनेक्ट हमारे बुनियादी ढांचे पर एक साझा Oracle उदाहरण
  3. परिभाषित निर्माण नाम
  4. अद्यतन DDL के साथ नए खाली योजना के आधार पर एक नई योजना बनाने के लिए निर्माण (हम उत्पादन में Flyway उपयोग करते हैं, तो यह अंश आसान)
  5. भागो एकीकरण परीक्षणों है
  6. बाद एकीकरण परीक्षण के चरण में
  7. ड्रॉप योजना (बनाता है के बाद से मैन्युअल रूप से बंद कर दिया जा सकता है या लटका, यह अभी भी बासी योजनाओं के लिए स्वत: डीबी सफाई)
के कुछ प्रकार है के लिए आवश्यक है

आप SQL स्क्रिप्ट निष्पादित करने के लिए sql-maven-plugin का उपयोग कर सकते हैं। या फ्लाईवे का उपयोग करते हुए flyway-maven-plugin

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