2011-06-01 9 views
5

मैं एक विरासत परियोजना है कि के साथ काम कर रहा हूँ:क्या चींटी विरासत पदानुक्रम के आधार पर जुनीट परीक्षणों को वर्गीकृत कर सकती है?

  • शुद्ध इकाई
  • एकता परीक्षण परीक्षण;

मैं तलाश कर रहा हूँ (धीमी चलाने के लिए बुरा निर्भरता के सभी प्रकार है) एंटी के साथ अलग-अलग दोनों प्रकार के परीक्षण चलाने के लिए सबसे आसान तरीका है।

मुझे आश्चर्य है कि वहाँ चींटी स्वचालित रूप से वंशानुगत पदानुक्रम के आधार पर इन दो श्रेणियों को पहचान करने के लिए एक तरीका है:

StringUtilsTest extends TestCase // "pure unit test" 

बनाम

ProductionDBTest extends AbstractTransactionalTesterBase // "integration test" 

वहाँ सार सुपर-क्लास के एक पदानुक्रम है कि एकीकरण परीक्षण आधार पर कर रहे है पर, लेकिन वे सभी कुछ वसंत परीक्षण कक्षाओं और अंततः AbstractSpringContextTests पर आते हैं जो junit.framework.TestCase फैलाता है।

दूसरे शब्दों में, क्या मैं एंटी में अंतर कर सकता हूं, परीक्षण करता है कि (अप्रत्यक्ष रूप से) AbstractSpringContextTests और परीक्षण जो सीधे TestCase का विस्तार करते हैं? या मुझे मैन्युअल रूप से परीक्षणों के माध्यम से जाना होगा और उदा। उन्हें Categories या टेस्ट सूइट में अलग रखें? (वहाँ कई परीक्षण तो मैं ऐसा नहीं करना चाहते हैं।)


संकल्प: मैंने कोशिश की शॉन (बहुत आशाजनक) approach, लेकिन नहीं यह (आसानी से) काम कर रहा हो सकता है। तो मैं this SO question में वर्णित एक सेटअप का उपयोग करके शुद्ध लोगों (जो छोटा समूह था) को एनोटेट करने के बाद अर्द्ध मैन्युअल रूप से परीक्षणों के माध्यम से जा रहा था, और उन्हें एंटी like this के साथ चला रहा था। (ध्यान दें कि कस्टम टेस्टरुनर लिखना आवश्यक नहीं है।)

उत्तर

4

हमारे जेनिट परीक्षणों को वर्गीकृत करने के लिए उपयोग किए जाने वाले समाधान को कस्टम एनोटेशन का उपयोग करना था। इसके बाद आप एक कस्टम टेस्टरुनर का उपयोग कर सकते हैं जिसके साथ ध्वज या तर्क दिया जा सकता है कि किस प्रकार के परीक्षण प्रकार चलाना है, या उन सभी को।

क्षमा करें, कोई उदाहरण कोड नहीं बल्कि एनोटेशन बनाना और टेस्टरनर बहुत बुनियादी है, इसे आज़माएं!

+1

मैं अंततः एनोटेशन के साथ गया, इसलिए मैं इसे स्वीकार कर सकता हूं, लेकिन ... मुझे कस्टम टेस्ट धावकों के आपके वकील में कोई समस्या है। :) कभी भी एक लिखा नहीं है, यह कुछ समय के आसपास googling के आधार पर, * * मेरे लिए सीधा नहीं लग रहा था। सौभाग्य से, कस्टम TestRunner ** ** आवश्यक नहीं है, क्योंकि आप [इस] जैसे एक सेटअप का उपयोग कर सकते हैं (http://stackoverflow.com/questions/2176570/how-to-run-all-tests-belonging-to-a -certain-श्रेणी में JUnit -4)! – Jonik

0

मैंने इसे स्वयं, दिमाग का उपयोग नहीं किया है। लेकिन मुझे पता है कि आप एक संसाधन संग्रह के रूप में चलाने के लिए यूनिट परीक्षण व्यक्त करते हैं, और उन्हें restrictions के साथ परिभाषित किया जा सकता है। और, एक संभावित प्रतिबंध "instanceof" है जो आपको सुपरक्लास के आधार पर कक्षाओं का चयन करने देता है। इससे आप एकीकरण परीक्षण का चयन कर सकते हैं, और फिर संसाधन संग्रह "अंतर" फ़ंक्शन का उपयोग करके आप बाकी सब कुछ चुन सकते हैं। बहुत बुरा नहीं, अगर तुच्छ नहीं है। यह चींटी 1.8+ में लगता है मुझे लगता है।

+0

धन्यवाद, दिलचस्प लगता है! मुझे यद्यपि 'exampleof' काम करने में समस्याएं आ रही हैं ... हालांकि यह सुनिश्चित नहीं है कि प्रोजेक्ट फ़ाइल में एंटीलिब "org.apache.tools.ant.types.resources.selectors" को कैसे पेश किया जाए - विशेषता xmlns डालने से : rsel = "antlib: org.apache.tools.ant.types.resources.selectors" प्रोजेक्ट तत्व में या क्या? ओह ठीक है, मैं कल जारी रखूंगा। चींटी 1.8.1 का उपयोग करना ताकि यह कोई समस्या न हो। – Jonik

2

आसान तरीका परीक्षण प्रकार

कहते हैं कि हम दिनांकों परीक्षण कर रहे थे की सुविधा देता है के साथ समाप्त अपने परीक्षण कक्षाओं नाम के लिए है।

DateTest.java (त्वरित सामान्य परीक्षण)

DateSysTest।जावा (दीर्घ परिचालन)

तो में वहाँ दो लक्ष्यों को एक त्वरित इकाई परीक्षण थे

<batchtest todir="your dir"> 
     <!--Run unit tests for each class with suffix Test, unless it is SysTest or StressTest--> 
     <fileset dir="${src}/test" 
     includes="**/*Test.java" 
     excludes="**/*StressTest.java **/*SysTest.java" /> 
    </batchtest> 

तो आप कुछ ही चींटी लक्ष्य, त्वरित परीक्षण sys परीक्षण और एक के लिए एक के लिए एक उन्हें बनाने है सब .. ऐसा कुछ। यह कहना है कि क्या आप अपनी परीक्षा कक्षाओं का नाम बदल सकते हैं।

+0

+1 मेरा उत्तर टेस्ट प्रकारों को अलग करने के लिए एनोटेशन का उपयोग करने के बारे में बात करता है। यह अच्छा है क्योंकि यह लोगों को गड़बड़ाने के डर के कारण परीक्षणों का नाम बदलने से नहीं रोकेगा। ऐसा कहा जा रहा है कि नामकरण सम्मेलनों का प्रभावी ढंग से उपयोग किया जा सकता है, और यदि ऐसा है, तो यह समाधान समझने और लागू करने में आसान है। –

+0

इस समय का उपयोग करके मैं समाप्त नहीं हुआ, लेकिन वैसे भी +1 क्योंकि यह परीक्षण श्रेणियों को अलग करने का एक प्रयास और सत्य (यद्यपि पुराना स्कूल) तरीका है जो अधिकांश उपकरणों (आईडीई, चींटी इत्यादि) के साथ परेशानी के बिना काम करता है। – Jonik

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