2011-01-10 13 views
5

मैं जावा के लिए बिल्कुल नया हूं। मैंने एक एकल जुनीट टेस्ट क्लास का निर्माण किया है और इस फाइल के अंदर कई परीक्षण विधियां हैं I जब मैं इस वर्ग को चलाता हूं (नेटबीन में) यह कक्षा में प्रत्येक टेस्ट विधि को क्रम में चलाता है।मैं जुनीट टेस्ट क्लास में विशिष्ट टेस्ट-विधियों को कैसे चला सकता हूं (या ऑर्डर बदल सकता हूं)?

प्रश्न 1: मैं इस कक्षा में परीक्षण विधियों का केवल एक विशिष्ट सब-सेट कैसे चला सकता हूं? (संभावित उत्तर: उन परीक्षणों के लिए @Test से ऊपर @ इग्नोर लिखें जिन्हें मैं अनदेखा करना चाहता हूं। हालांकि, अगर मैं यह इंगित करना चाहता हूं कि मैं कौन से परीक्षण विधियों को देखना चाहता हूं, जिन्हें मैं अनदेखा करना चाहता हूं, तो क्या ऐसा करने का एक और सुविधाजनक तरीका है ?)

प्रश्न 2: क्या ऑर्डर बदलने का कोई आसान तरीका है जिसमें विभिन्न परीक्षण विधियां चल रही हैं?

धन्यवाद।

+0

जब आप विधियां कहते हैं, तो क्या आप परीक्षण विधियों के बारे में बात कर रहे हैं? –

+3

ऑर्डर क्यों मायने रखता है? प्रत्येक इकाई परीक्षण अलगाव में चलाने में सक्षम होना चाहिए। –

+2

यह आमतौर पर निष्पादन के आदेश पर निर्भर करने के लिए एक परीक्षण गंध है, परीक्षण स्टेटलेस होना चाहिए। –

उत्तर

6

आपको TestSuite के बारे में पढ़ना चाहिए। वे & समूह को आपके यूनिट परीक्षण विधियों को ऑर्डर करने की अनुमति देते हैं। । यहाँ एक उद्धरण फार्म this article

"JUnit परीक्षण कक्षाओं बनाने टेस्ट स्वीट द्वारा एक विशेष क्रम में चलाने के लिए लुढ़का किया जा सकता है

है

संपादित करें: यहाँ दिखा कि यह कैसे सरल है एक उदाहरण है:

public static Test suite() { 
     TestSuite suite = new TestSuite("Sample Tests"); 

     suite.addTest(new SampleTest("testmethod3")); 
     suite.addTest(new SampleTest("testmethod5")); 

     return suite; 
} 
+0

आपका उदाहरण SampleTest.class में सभी परीक्षण विधियों को चलाएगा। हालांकि, अगर नमूनाटेस्ट.क्लास में मेरे पास विभिन्न परीक्षण विधियां हैं [testmethod1(), testmethod2(), ...] और मैं केवल testmethod3() और testmethod5() चलाने के लिए; क्या यह संभव होगा? – kmccoy

+1

@ के मैककॉय: मैंने आपकी आवश्यकताओं को पूरा करने के लिए अपना उदाहरण संपादित किया है :) – Lukasz

+1

मैंने उपर्युक्त कोड का परीक्षण किया है और दो चीजें नोट की हैं: (1) पहली पंक्ति को पढ़ना चाहिए: सार्वजनिक स्थैतिक टेस्ट सूइट सूट() { (2) कक्षा नमूना के अंदर किसी को कन्स्ट्रक्टर public SampleTest (String name) { super(name); } परिभाषित करने की आवश्यकता है अन्यथा, यह मेरे लिए चाल है। धन्यवाद! – kmccoy

0

यह करने के लिए दृष्टिकोण की एक संख्या हैं, लेकिन यह अपनी विशिष्ट आवश्यकताओं पर निर्भर करता है। उदाहरण के लिए, आप अपने परीक्षण तरीकों में से प्रत्येक के अलग परीक्षण वर्गों में, विभाजित कर सकते एक डी फिर उन्हें विभिन्न परीक्षण सूट में व्यवस्थित करें (जो वांछित होने पर सूट में विधियों को ओवरलैप करने की अनुमति देगा)। या, एक आसान समाधान आपके परीक्षण विधियों को सामान्य श्रेणी के तरीकों को अपनी कक्षा में एक परीक्षण विधि के साथ बनाना होगा जो उन्हें आपके विशिष्ट क्रम में बुलाता है। क्या आप चाहते हैं कि उन्हें गतिशील रूप से बुलाया जाए?

2

This answer आपको बताता है कि यह कैसे करें। परीक्षण चलाने के क्रम को यादृच्छिक बनाना एक अच्छा विचार है!

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

टेस्ट केस का नक्शा बनाने या उत्पन्न करने का एक भयानक विचार नहीं है -> टेस्ट की सूची और फिर सभी परीक्षणों को यादृच्छिक रूप से निष्पादित करें।

0

मैं लंबे समय तक जावा का उपयोग नहीं कर रहा हूं, लेकिन जहां तक ​​मैंने देखा है वहां अनदेखा करने के बजाय निष्पादित करने के तरीकों को चिह्नित करने का एक सुविधाजनक तरीका नहीं है। इसके बजाय मुझे लगता है कि यह आईडीई का उपयोग करके हासिल किया जा सकता है। जब मैं ग्रहण में ऐसा करना चाहता हूं तो मैं उन पर क्लिक करके व्यक्तिगत परीक्षण चलाने के लिए जूनिट व्यू का उपयोग कर सकता हूं। मुझे लगता है कि Netbeans में कुछ समान है।

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

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