2010-05-19 12 views
12

साथ JUnit का उपयोग कर एक JUnit परीक्षण में परेशानी मैं एक परीक्षण विशेष कॉन्फ़िग फ़ाइल में लोड करने के लिए इस कोड का उपयोग कर रहा हूँ:क्लासपाथ दोनों ग्रहण और Maven

InputStream configFile = getClass().getResourceAsStream("config.xml"); 

जब मैं ग्रहण के माध्यम से परीक्षण चलाने के लिए, यह आवश्यक है xml फ़ाइल को उसी फ़ाइल में परीक्षण फ़ाइल के रूप में होना चाहिए।

जब मैं मैवेन के साथ प्रोजेक्ट का निर्माण करता हूं, तो यह xml को src/test/resources में होना आवश्यक है, ताकि इसे target/test-classes में कॉपी किया जा सके।

मैं उन्हें केवल एक फ़ाइल के साथ कैसे काम कर सकता हूं?

उत्तर

15

काम करता है Config.xml फ़ाइल को src/test/संसाधनों में रखें, और ग्रहण में स्रोत फ़ोल्डर के रूप में src/test/संसाधन जोड़ें।

अन्य मुद्दा यह है कि getResourceAsStream("config.xml") पैकेज के साथ काम करता है। यदि यह कॉल करने वाला वर्ग com.mycompany.whatever पैकेज में है, तो getResourceAsStream भी config.xml को उसी पथ में होने की उम्मीद कर रहा है। हालांकि, यह क्लासपाथ फ़ाइल सिस्टम में एक ही पथ है। आप या तो src/test/resource - src/test/resource/com/mycompany/जो भी/config.xml के अंतर्गत एक ही निर्देशिका संरचना में फ़ाइल डाल सकते हैं - या आप पथ में अग्रणी "/" जोड़ सकते हैं - इससे getResourceAsStream लोड होता है classpath के आधार से फ़ाइल - तो अगर आप इसे getResourceAsStream("/config.xml") करने के लिए बदल तुम सिर्फ फ़ाइल src/परीक्षण/संसाधन/config.xml में डाल सकते हैं

+1

यही वह है!/ समस्या थी। धन्यवाद! – Steve

4

src/test/resources/ निर्देशिका को अपनी ग्रहण परियोजना में स्रोत फ़ोल्डर के रूप में जोड़ने का प्रयास करें। इस तरह, यह क्लासपाथ पर होना चाहिए जब ग्रहण आपके यूनिट परीक्षण को चलाने की कोशिश करता है।

+0

अफसोस की बात है, इस एकल बचत टिप्पणी ने मुझे पूरा दिन पूरा करने के लिए लिया। परीक्षणों की मेरी समस्या को हल किया गया है जो मैवेन में संसाधन बंडल ठीक चल रहा है लेकिन ग्रहण में भागने में विफल रहा है। धन्यवाद! – davemyron

0

अगर आप सिर्फ परीक्षण समय में इसकी जरूरत है, आप इसे फाइल सिस्टम के माध्यम से लोड कर सकते हैं, संदर्भ यहाँ दोनों ही मामलों के लिए ही होना चाहिए:

new FileInputStream(new File("target/test-classes/your.file")); 

सुंदर नहीं है, लेकिन यह

1

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन मैं इस पर ठोकर खाकर यह अजीब पाया कि उपर्युक्त उत्तरों में से कोई भी मेवेन ग्रहण प्लगइन का उल्लेख नहीं करता है। mvn eclipse:eclipse चलाएं और इसमें src/main/संसाधन और src/test/संसाधन और आपके लिए ग्रहण में "जावा बिल्ड पथ" शामिल होगा।

यह सामान का एक गुच्छा क्या आप भी वहां से कॉन्फ़िगर कर सकते हैं (यदि आप, अगर तुम नहीं तो यह पहले से ही जाने के लिए तैयार है सम्मेलनों से विचलित करने की जरूरत है) है:

सामान्य रूप से, यदि आप मेवेन का उपयोग कर रहे हैं, तो ग्रहण में मैन्युअल रूप से सामान न बदलें। अपने .classpath/.project को कभी भी प्रतिबद्ध न करें और इसके बजाय केवल उन फ़ाइलों को उत्पन्न करने के लिए मेवेन ग्रहण प्लगइन का उपयोग करें (और उन्हें अपडेट करें)। इस तरह आपके पास अपनी प्रोजेक्ट, मैवेन, और मैन्युअल सेटिंग्स के लिए एक कॉन्फ़िगरेशन स्रोत नहीं है जिसे आप दूसरों को उपयोग करने और याद रखने के लिए कहने के लिए समाप्त होते हैं। यदि यह एक मेवेन प्रोजेक्ट है: इसे स्रोत नियंत्रण से बाहर की जांच करें, "एमवीएन ग्रहण: ग्रहण" चलाएं और इसे ग्रहण में काम करना चाहिए, अगर आपके पीओएम को काम की ज़रूरत नहीं है।

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