2010-02-21 13 views
10

का उपयोग कर डुनिट टेस्ट कवरेज आंकड़े प्राप्त करना हमारे पास एक बड़ी डेल्फी परियोजना (1.5 मिलियन लाइन कोड) है, और हम चुस्त प्रक्रियाओं का उपयोग करने के लिए आगे बढ़ रहे हैं।फाइनलबिल्डर और एकटाइम

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

मैं यूनिट परीक्षण निष्पादन योग्य चलाने के लिए "निष्पादन प्रोग्राम" कार्य का उपयोग कर रहा हूं, परिणाम लॉग इन करें और बाद में फ़ाइल को पार्स करें। मैं AQtime (COM के माध्यम से) चलाने के लिए "रन स्क्रिप्ट" कार्य का उपयोग करना चाहता हूं और परिणामों को एक्सएमएल में निर्यात करना चाहता हूं ताकि मैं उन परिणामों के माध्यम से विश्लेषण कर सकूं।

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

उत्तर

7

हम इस एक ही पथ नीचे भागा की तरह कुछ हो जाएगा, और हम से DUnit परीक्षण नहीं चला AQTime,

इसके बजाय हम फाइनलबिल्डर का उपयोग करके हमारे ड्यूनिट टेस्ट बनाते हैं और चलाते हैं।

हमारे यूनिट परीक्षण XmlTestRunner का उपयोग करते हैं, तो हम जान सकते हैं कि परीक्षण परिणामस्वरूप XML फ़ाइल पर XPath क्वेरी का उपयोग करके विफल रहता है या नहीं।

अद्यतन: अंतिमबिल्डर 7.0 के लिए हालिया अपडेट अब डुनिट का समर्थन करता है। यह अपने स्वयं के XMLTestrunner.pas के माध्यम से है, जो कि स्थापित करने के बाद FinalBuilder निर्देशिका के अंतर्गत है। यह धावक परीक्षण परिणामों को NUnit के समान स्वरूप में आउटपुट करता है। यह फिर Finalbuilder सर्वर में वास्तव में अच्छी तरह से एकीकृत करता है।

+0

धन्यवाद रॉबर्ट। हमारे निर्माण में मौजूद डुनिट का संस्करण XMLTestRunner नहीं था। मैंने Sourceforge से dnnit 9.3 डाउनलोड किया और Contrib फ़ोल्डर से XMLTestRunner को पकड़ लिया। क्या मैं इसे सब कुछ करना चाहता था। – Catharz

+1

कैथारज़, अगर आपको उत्तर दिया गया है तो आपको एक उत्तर स्वीकार करना चाहिए। –

2

आप उस सेटअप का वर्णन कर रहे हैं जिसे हम धीरे-धीरे विकसित कर रहे हैं।

  • DUnit परीक्षण अनुप्रयोगों सांत्वना TTextTestListener TextTestRunner इकाई में परिभाषित का उपयोग कर के रूप में संकलित कर रहे हैं।
  • सीआई सर्वर एक cmd स्क्रिप्ट है जो सभी प्रोजेक्ट बनाता है और सभी परीक्षण निष्पादित करता है।
  • परीक्षणों का आउटपुट फ़ाइल में पाइप किया जाता है।

एक समाधान, जबकि अभी भी एक फ़ाइल है कि बाद में पार्स किया जा सकता करने के लिए परिणाम पाइप करने में सक्षम हो AQTime इन सांत्वना अनुप्रयोगों प्रोफ़ाइल के लिए हो सकता है ?!

एक अन्य समाधान अपनी खुद की TestListener वस्तु को लागू करने और उस वस्तु, eventlog को testresults बारे में सीधे एक लॉगफ़ाइल, एक डेटाबेस या जहाँ भी आप पसंद करने के लिए और इस FinalBuilder द्वारा उठाया है के लिए हो सकता है।

इसके बजाय अपनी परियोजना फ़ाइल में कुछ इस तरह होने के

Application.Initialize; 
    if System.IsConsole then TextTestRunner.RunRegisteredTests 
    else GUITestRunner.RunRegisteredTests; 

यह इस

Application.Initialize; 
    if System.IsConsole then OurEventLogTestRunner.RunRegisteredTests 
    else GUITestRunner.RunRegisteredTests; 
+0

प्रतिक्रिया लिवन ​​के लिए धन्यवाद। मैंने फ़ाइल को निष्पादन योग्य dUnit के परिणामों को पाइप करने के लिए AQtime प्राप्त करने का प्रयास किया, लेकिन यह काम नहीं किया। मैंने अपने स्वयं के टेस्टलिस्टर को लागू करने पर भी एक नज़र डाली, जो कि बहुत आसान लग रहा था। लेकिन dnnit 9.3 से XMLTestRunner को देखने के बाद, यह और भी आसान लग रहा था। – Catharz

+0

इसके अलावा, मैं सुझाव दूंगा कि आप अपना कोड बदल दें: TextTestRunner.RunRegisteredTests (rxbHaltOnFailures) ताकि कुछ परीक्षण विफल होने पर आपको त्रुटि कोड <> 0 मिल जाए। निरंतर एकीकरण के लिए उत्कृष्ट। – marius

+0

@marius: thx, मुझे यह नहीं पता था। फिलहाल, हम त्रुटियों/विफलताओं की मात्रा को खोजने के लिए परीक्षण परिणामों में एक grep खोज करते हैं। –