2012-09-16 24 views
14

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

मुझे लगता है कि के माध्यम से

java -ea -cp <classpath> org.junit.runner.JUnitCore <tests> 

JUnit कमांड लाइन चलेगा, लेकिन इस एक रिपोर्ट फ़ाइल का उत्पादन नहीं करता एक काम कर सेटअप है। मुझे पता है कि चींटी एक एक्सएमएल रिपोर्ट तैयार करने में सक्षम है, लेकिन मैं इस प्रक्रिया में चींटी को शामिल नहीं करना चाहता (मेरे पास पहले से ही पर्याप्त हिस्सों हैं)।

क्या कमांड लाइन से जूनिट लॉन्च करने का कोई तरीका है जैसे कि यह एक रिपोर्ट तैयार करता है?

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

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

+0

विंडोज या यूनिक्स (कमांड लाइन के मामले में)? –

उत्तर

16

जुनीट लाइब्रेरी में कोई XML आउटपुट विकल्प नहीं है। ऐसी चीज प्राप्त करने के लिए, आपको अपना खुद का RunListener लिखना होगा, जो आउटपुट के लिए सुनता है और आपके मामले में एक्सएमएल फाइल लिख देगा।

हालांकि, एक्सएमएल फ़ाइल को सही प्रारूप में प्राप्त करने के लिए, ताकि इसे सीआई सिस्टम द्वारा पढ़ा जा सके, मुझे लगता है कि केवल build.xml (JUnitReport) का उपयोग करके कमांड लाइन के माध्यम से चींटी का उपयोग करना कहीं अधिक आसान होगा। , या जावा एपीआई का उपयोग: How can i use Apache ANT Programmatically

संपादित करें: कमांड लाइन से

  • उपयोग चींटी प्रोग्राम के रूप में JUnitCore के साथ सीधे
  • उपयोग XMLJUnitResultFormatter (जावा एपीआई का उपयोग कर)
  • बनाएं

    1. उपयोग चींटी: प्रारंभ में, हम चार विकल्प था एक कस्टम रनलिस्टर जो सही एक्सएमएल आउटपुट उत्पन्न करता है।

    प्रतिबंध को देखते हुए ओपी से जोड़ा है, हम कमांड लाइन है, जो समाप्त 1.

    चींटी JUnit कार्य में और अधिक बारीकी से देखने के बाद से चींटी का उपयोग नहीं कर सकते हैं, इसका इस्तेमाल करने के लिए असंभव प्रतीत हो रहा है यह जुनीटकोर (एक टेस्टलिस्टर जोड़कर) के साथ, क्योंकि चींटी सीधे टेस्ट क्लास के नाम का उपयोग करती है, इसलिए आप पुल क्लास नहीं कर सकते हैं। XMLJUnitResultFormatter.java

    private void formatError(String type, Test test, Throwable t) { 
        ... 
        nested.setAttribute(ATTR_TYPE, t.getClass().getName()); 
    
        String strace = JUnitTestRunner.getFilteredTrace(t); 
        Text trace = doc.createTextNode(strace); 
        nested.appendChild(trace); 
    } 
    

    से यह 3.

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

    तो आखिरकार, मैं आधार के रूप में XMLJUnitResultFormatter से कोड का उपयोग करके 4, एक कस्टम रनलिस्टर करता हूं। और फिर, मैं इसे गीथूब पर प्रकाशित करूंगा।कॉम, इसलिए इस सवाल का सही उत्तर दिया जा सकता है :-)

  • +0

    क्षमा करें, मैं लाइनब्रेक दिखाई देते हैं ... अगर मैं तुम्हें सही ढंग से समझ, आप सुझाव दे रहे हैं कि मैं चाहिए करने में असमर्थ लग रहे हैं: 1) चींटी जार 2 शामिल हैं) लिखना एक कस्टम मुख्य 3) चींटी जार के RunListener जोड़ने एक जुनीटकोर उदाहरण 4) इसे चीर दें? या फॉर्म 1 का एक छोटा संस्करण है 1) एंटी जार 2) इसे अधिक सीधे आमंत्रित करें और यह जुनीटकोर हिस्से को संभालेगा? – Matt

    +1

    चींटी जूनिट को आमंत्रित करती है, यह परीक्षण चलाती है। तो आप इसे build.xml के साथ प्रदान करेंगे, और चींटी का आह्वान करेंगे। सबसे आसान तरीका यह सुनिश्चित करना होगा कि चींटी आपके सिस्टम पर कहीं भी स्थापित की गई हो, और फिर इसे कमांड लाइन से करें। जावा के बजाए ... आपके पास चींटी होगी ... –

    +1

    अलास, चींटी इंस्टॉल की आवश्यकता है उन चीजों में से एक है जो मैं नहीं कर सकता। यह संदेश उच्च से नीचे आया था। – Matt