2010-04-14 13 views
8

यहां मैं जो करने की कोशिश कर रहा हूं वह यहां है। मैं एक वेब अनुप्रयोग में जेपीए दृढ़ता का उपयोग कर रहा हूं, लेकिन मेरे पास यूनिट परीक्षणों का एक सेट है जिसे मैं एक कंटेनर के बाहर चलाने के लिए चाहता हूं।क्या जेपीए persistence.xml classpath स्थित है?

मेरे पास मेरे मुख्य ऐप के META_INF फ़ोल्डर में मेरा प्राथमिक persistence.xml है और यह कंटेनर (ग्लासफ़िश) में बहुत अच्छा काम करता है।

मैंने में test-classes निर्देशिका में दूसरा persistence.xml रखा। इसमें एक अलग दृढ़ता इकाई है जिसे मैं केवल परीक्षण के लिए उपयोग करना चाहता हूं। ग्रहण में, मैंने डिफ़ॉल्ट फ़ोल्डर की तुलना में इस फ़ोल्डर को क्लासपाथ में उच्च रखा है और ऐसा लगता है कि यह काम करता है।

अब जब मैं सीधे कमांड लाइन से मेवेन चलाता हूं और यह यूनिट परीक्षण चलाने की कोशिश करता है, तो persistence.xml ओवरराइड को अनदेखा किया जाता है। मैं META-INF में test-classes निर्देशिका उत्पन्न मेवेन के फ़ोल्डर में ओवरराइड देख सकता हूं और मुझे उम्मीद है कि इस फ़ाइल का उपयोग करने के लिए मेवेन परीक्षण, लेकिन ऐसा नहीं है। मेरे स्प्रिंग टेस्ट कॉन्फ़िगरेशन ओवरराइड, एक समान फैशन में हासिल कर रहे हैं काम कर रहे हैं।

मैं इस बात पर उलझन में हूं कि persistence.xml क्लासपाथ के माध्यम से स्थित है या नहीं। यदि यह था, तो मेरा ओवरराइड वसंत ओवरराइड की तरह काम करना चाहिए क्योंकि मैवेन निश्चित प्लगइन explains "[टेस्ट क्लास निर्देशिका] टेस्ट क्लासपाथ की शुरुआत में शामिल किया जाएगा"।

क्या मुझे गलत अनुमान है कि persistence.xml फ़ाइल कैसे स्थित है?

मैं persistence.xml फ़ाइल में दूसरी दृढ़ता इकाई बना सकता हूं (और है), लेकिन यह उत्पादन उत्पादन में परीक्षण कॉन्फ़िगरेशन रखने के लिए गंदा लगता है। मेरे लक्ष्य को प्राप्त करने के तरीके पर कोई अन्य विचार स्वागत है।

उत्तर

3

persistence.xml क्लासपाथ से लोड किया गया है; अतीत में, मैंने वही किया है जो आपने वर्णित किया है।

यह मेवेन के साथ सबसे अधिक संभावना है। आप -X विकल्प के साथ इसे चलाकर मेवेन क्लासपाथ को डीबग कर सकते हैं।

+0

ठीक है - प्रतिक्रिया के लिए धन्यवाद। कम से कम मुझे पता है कि मैं ऐसा कुछ नहीं कर रहा हूं जो पूरी तरह से बाहर है। – Vinnie

+0

ठीक है - यह अब काम कर रहा है। इससे पहले कि मैंने एक ही नाम के साथ विभिन्न फ़ाइलों में प्रत्येक दृढ़ता इकाई का नाम दिया था। मैंने परीक्षण निरंतरता इकाई को एक अलग नाम बदलने के लिए बदल दिया। यह मेरे लिए सही प्रतीत नहीं होता है, लेकिन शायद यह एक सीमा है जिसे मैं नहीं जानता था। – Vinnie

+0

मैं गया और कोड को खोला जहां मैंने पहले किया था, और मेरे पास यूनिट परीक्षणों के लिए परिभाषित एक अलग दृढ़ता इकाई थी, हालांकि मेरी टेस्ट persistence.xml फ़ाइल में समान (गैर-परीक्षण) दृढ़ता इकाई भी परिभाषित थी। हालांकि यह शायद जरूरी नहीं था। मुझे लगता है कि यूनिट परीक्षण इकाई प्रबंधक बनाते समय परीक्षण दृढ़ता इकाई का उपयोग करते हैं। –

4

यह अस्पष्ट है जहां आपने "दूसरा" persistence.xml (परीक्षण संस्करण) रखा है लेकिन आपको इसे src/test/resources/META-INF में रखना चाहिए। टेस्ट संसाधन स्वचालित रूप से आपके यूनिट परीक्षणों के लिए मेवेन द्वारा स्थापित क्लासपाथ में जोड़े जाते हैं और src/main/resources में रखे गए संसाधनों पर प्राथमिकता लेते हैं।

+0

सही। वह वहीं है। – Vinnie

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