2012-07-27 23 views
6

में दिखाई नहीं दे रही हैं मैं जेएमआईटी परीक्षण जेएमटर 2.7 के साथ चलाने की कोशिश कर रहा हूं। हालांकि, जुनीट नमूने के ड्रॉप डाउन में टेस्ट क्लास का चयन करते समय, वे दिखाई नहीं देते हैं। जैसा कि मैंने पाया, ऐसा इसलिए है क्योंकि सभी कक्षाओं के लिए परीक्षण कक्षाएं किसी अन्य वर्ग से बढ़ रही हैं (AbstractJUnit4SpringContextTests आधार वर्ग है, जिसमें विभिन्न विधियों के साथ सुविधा विधियों को प्रदान किया जाता है)। एक परीक्षण वर्ग जो उन बेस वर्गों से विस्तारित नहीं है, का चयन किया जा सकता है।JUnit परीक्षण कक्षाएं जेएमटर

परीक्षण कक्षा वाले जेएआर फ़ाइल मेवेन (टेस्ट-जार) द्वारा बनाई गई है, जेएआर जिसमें सभी निर्भरताएं हैं मैवेन फ़ैट्जर प्लगइन द्वारा बनाई गई है। दोनों जार जेएमटर/lib/junit निर्देशिका में रखा गया है।

मुझे पता है कि जेएमटर मैनुअल का कहना है कि सभी टेस्ट क्लास को जुनीट टेस्ट क्लास से विस्तारित होना चाहिए, लेकिन यह केवल जुनीट 3 के लिए सच है। जुनीट 4 के साथ, जेएमटर को उस आवश्यकता की आवश्यकता नहीं है। बेशक, मैं सभी परीक्षणों को फिर से लिख सकता हूं ताकि उन्हें बेस क्लास से विस्तार नहीं करना पड़े, लेकिन इसके परिणामस्वरूप एक विशाल रखरखाव मुद्दा होगा। तो, मैं जेएमआईटी परीक्षणों को जेएमटर के साथ कैसे निष्पादित करूं जो बेस क्लास से विस्तारित हो?

अपडेट करें 2012-08-09

PMD के संकेत के लिए धन्यवाद, अब मैं निर्भरता एक एक करके JMeter की lib फ़ोल्डर में प्रतिलिपि, और अब जीयूआई अपने सभी इकाई परीक्षण दर्शाता है। इससे पहले कि, मुझे अपने आप से कुछ समस्याएं हल करनी पड़ी:

  • लॉगकिट-1.0.1.jar की प्रतिलिपि बनाकर फ़ोल्डर में जेएमटर जीयूआई को शुरू करने से रोका गया। कोई विचार नहीं, क्यों कोई त्रुटि या लॉग संदेश दिया गया था। JVM बस शुरू हुआ और समाप्त हो गया।
  • मैवेन निर्भरताओं के कारण कुछ संस्करण संघर्ष थे जो वसंत परीक्षण पैकेज के पुराने संस्करण पेश किए गए थे। इसके परिणामस्वरूप एक पुराने बेस क्लास से एक ही नाम के साथ विस्तारित कुछ परीक्षण कक्षाएं हुईं। पोम फ़ाइल में उन निर्भरताओं को छोड़कर मदद मिली।

अब मैं अपने जुनीट परीक्षण मामलों को निष्पादित कर सकता हूं। हालांकि, मेरी कक्षाओं में कई संदर्भ @Resource के साथ एनोटेटेड हैं। जेएमटर का टेस्ट्रुनर उन संदर्भों को इंजेक्ट नहीं कर रहा है, क्योंकि जब भी संदर्भ का उपयोग किया जाता है, तो NullPointerException फेंक दिया जाता है, जैसा कि जेएमटर लॉग में देखा जा सकता है। तो, मैं उन निर्भरताओं को इंजेक्ट करने के लिए जेएमटर कैसे प्राप्त करता हूं, क्या यह भी संभव है?

+0

@resource आमतौर पर संदर्भ के दौरान वसंत द्वारा व्याख्या किया जाता है। इस मामले में मुझे आपके कोड की गहराई से जांच करनी चाहिए, शायद आपको यह देखना चाहिए कि स्प्रिंग टेस्ट केस खुद को कैसे शुरू करता है या आप मैन्युअल रूप से संसाधनों को इंजेक्ट करने के लिए सेटअप विधि को ओवरराइड करने का प्रयास कर सकते हैं। वैसे, अगर मेरी प्रतिक्रिया सही थी तो आपको इसे चिह्नित करना चाहिए और प्रारंभिक एक को बदलने के बजाय शायद एक और प्रश्न खोलना चाहिए, इस तरह एसओ काम करता है। –

+0

@Teinacher आप के लिए एक समाधान मिला है? मेरे पास वही है और इसे हल करने के बारे में नहीं पता – javagirl

उत्तर

4

आपको अपने जूनिट क्लास को lib/junit फ़ोल्डर में रखना होगा जैसा कि आपने किया था और lib फ़ोल्डर में निर्भरताएं थीं।

आपको फतजर का उपयोग नहीं करना चाहिए क्योंकि कभी-कभी इन औजारों ने मेटा-इंफ से फ़ाइलों को हटा दिया है या केवल अपने जारों में से एक को सभी जारों, स्प्रिंग पुट्स में से एक को रखा है।

lib फ़ोल्डर में अपने सभी जार एक-एक करके जोड़ें।

यह देखने के लिए कि आपके पास कोई अपवाद है या नहीं, jmeter लॉग जांचें।

यदि यह अभी भी विफल रहता है, तो जेएमटर उपयोगकर्ता सूची पर एक प्रश्न पूछें और यदि आपको कोई जवाब नहीं मिलता है तो एक सरल परीक्षण केस बनाएं और एक बग खोलें।

1

क्या आपने विकल्प देखा है कि जुनीट नमूने को v4 परीक्षणों की खोज करनी है?

JMeter option to search for JUnit 4 annotations

मैं कोशिश की है और यह एक सरल परियोजना मैं JUnit 4 के साथ बना लिया है के लिए काम करता है, यह केवल @Test एनोटेशन यहां तक ​​कि उन वर्गों के साथ परीक्षण फिल्टर testcase वर्ग विस्तार नहीं करता है।

-1

Teinacher के रूप में लिखा था, JUnit परीक्षण JMeter में के बाद दिखाई देगा JMeter के/lib निर्देशिका में सभी परियोजना निर्भरता (सभी .jar फ़ाइलें) को कॉपी (JMeter पुनः आरंभ करने की जरूरत है)।

+0

जब कोई उत्तर स्वीकार किया जाता है और सही होता है तो डुप्लिकेट जोड़ने की आवश्यकता नहीं होती है जो केवल नए पाठकों को भ्रमित करता है। –