2012-02-16 10 views
7

मैंने ग्रूवी में कई XMLUnit परीक्षण (जो जुनीट फ्रेमवर्क में फिट हैं) लिखा है और groovy doco के अनुसार कमांड लाइन पर आसानी से निष्पादित कर सकते हैं लेकिन मुझे समझ में नहीं आता कि मुझे इसके लिए और क्या करना है पास/असफल परिणाम (जैसे this) और त्रुटियों की विस्तृत रिपोर्ट (जैसे this) प्रदर्शित करने के लिए जेनकिन्स/हडसन (या अन्य) द्वारा आवश्यक XML उत्पादन का उत्पादन करने के लिए। (छवि मालिकों के लिए क्षमा याचना)मैं जेनकिट परीक्षणों के लिए जुनीट टेस्ट रिपोर्ट कैसे तैयार करूं, जेनकिन्स/हडसन द्वारा खपत के लिए उपयुक्त?

वर्तमान में, मेरी किकऑफ़ स्क्रिप्ट यह है:

def allSuite = new TestSuite('The XSL Tests') 

//looking in package xsltests.rail.* 
allSuite.addTest(AllTestSuite.suite("xsltests/rail", "*Tests.groovy")) 

junit.textui.TestRunner.run(allSuite) 

और इस कुछ इस तरह का उत्पादन:

Running all XSL Tests... 
.... 
Time: 4.141 

OK (4 tests) 

मैं इस एक JUnit परीक्षण रिपोर्ट एक्सएमएल बनाने के लिए कर सकते हैं जेनकींस/हडसन द्वारा पढ़ने के लिए उपयुक्त फ़ाइल?

क्या मुझे एक अलग जुनीट धावक के साथ परीक्षण बंद करने की आवश्यकता है?

मैंने this उत्तर देखा है, लेकिन मैं अपनी खुद की परीक्षण रिपोर्ट आउटपुट लिखने से बचना चाहता हूं।

+1

क्या आप कुछ परीक्षण ढांचे का उपयोग कर रहे हैं? प्रोजेक्ट बनाने के लिए आप क्या उपयोग कर रहे हैं? –

+0

क्या ग्रैडल/मेवेन/चींट जैसे निर्माण उपकरण का उपयोग करने के लिए कोई विकृति है? –

+0

@Eric यह एक साइड प्रोजेक्ट है और कुछ पाने और जल्दी से चलने की तलाश में था। हालांकि, मैं सीखने और ग्राडल का उपयोग करने के मार्ग के नीचे जा सकता हूं क्योंकि यह "सीखने के लिए चीजों" के मेरे क्षेत्र में है। –

उत्तर

4

थोड़ा हैकेज के बाद मैंने एरिक वेंडेलिन के सुझाव को लिया है और ग्रैडल के साथ चला गया है।

ऐसा करने के लिए मैंने सहायक संसाधनों (इनपुट और अपेक्षित आउटपुट एक्सएमएल फाइलों) के साथ/src/test/resource/निर्देशिका में जाने के साथ आवश्यक निर्देशिका संरचना src/test/groovy/में आवश्यक ग्रोवी यूनिट परीक्षणों को स्थानांतरित कर दिया है।

सभी आवश्यक पुस्तकालयों को निर्माण में कॉन्फ़िगर किया गया है।Gradle फ़ाइल, वर्णित (अपनी संपूर्णता में) के रूप में यहाँ:

apply plugin: 'groovy' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.+' 

    groovy module('org.codehaus.groovy:groovy:1.8.2') { 
     dependency('asm:asm:3.3.1') 
     dependency('antlr:antlr:2.7.7') 
     dependency('xmlunit:xmlunit:1.3') 
     dependency('xalan:serializer:2.7.1') 
     dependency('xalan:xalan:2.7.1') 
     dependency('org.bluestemsoftware.open.maven.tparty:xerces-impl:2.9.0') 
     dependency('xml-apis:xml-apis:2.0.2') 
    } 
} 

test { 
    jvmArgs '-Xms64m', '-Xmx512m', '-XX:MaxPermSize=128m' 

    testLogging.showStandardStreams = true //not sure about this one, was in official user guide 

    outputs.upToDateWhen { false } //makes it run every time even when Gradle thinks it is "Up-To-Date" 
} 

यह ग्रूवी प्लगइन लागू होता है, Maven उपयोग करने के लिए निर्दिष्ट निर्भरता हड़पने के लिए सेट और उसके बाद निर्मित "परीक्षण" काम करने के लिए कुछ अतिरिक्त मान जोड़ता ।

वहां एक अतिरिक्त चीज है जो आखिरी पंक्ति है जो ग्रैडल हर बार मेरे सभी परीक्षण चलाती है और न केवल जो सोचती है वह नई/बदली जाती है, इससे जेनकिन्स अच्छी तरह से खेलता है।

मैं भी एक gradle.properties कॉर्पोरेट प्रॉक्सी/फ़ायरवॉल आदि के माध्यम से प्राप्त करने के लिए फ़ाइल बनाई:

systemProp.http.proxyHost=10.xxx.xxx.xxx 
systemProp.http.proxyPort=8080 
systemProp.http.proxyUser=username 
systemProp.http.proxyPassword=passwd 
इस के साथ

, मैं जेनकींस में एक 'मुक्त शैली' परियोजना बना लिया है कि चुनाव हमारे मर्क्युरियल रेपो समय-समय पर और जब भी कोई रेपो में एक अद्यतन एक्सएसएल करता है तो सभी परीक्षण चलाए जाएंगे।

मेरे मूल लक्ष्यों में से एक मानक जेनकिन्स/हडसन पास/असफल ग्राफिक्स और जुनीट रिपोर्ट्स का उत्पादन करने में सक्षम था, जो सफलता है: Pass/FailJUnit Reports के साथ।

मुझे उम्मीद है कि यह किसी और की समान आवश्यकताओं के साथ मदद करता है।

0

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

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

+0

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

0

आप अपना खुद का कस्टम RunListener (या SuiteRunListener) लिख सकते हैं। यह अभी भी आपको कुछ कोड लिखने की आवश्यकता है, लेकिन यह उस स्क्रिप्ट की तुलना में बहुत साफ है जिसे आपने लिंक प्रदान किया है। यदि आप चाहें, तो मैं आपको Jasmine के लिए जावास्क्रिप्ट में लिखे गए एक जुनीट रिपोर्टर के लिए कोड भेज सकता हूं और आप इसे ग्रोवी में 'अनुवाद' कर सकते हैं।

2

मैं इस चीज bootstrap करने के लिए सबसे तेजी से रास्ता खोजने Gradle साथ है:

# build.gradle 
apply plugin: 'groovy' 

task initProjectStructure() << { 
    project.sourceSets.all*.allSource.sourceTrees.srcDirs.flatten().each { dir -> 
     dir.mkdirs() 
    } 
} 

फिर gradle initProjectStructure चलाने के लिए और test/main/groovy को src/main/groovy और परीक्षण में अपने स्रोत के लिए कदम।

यह बहुत कुछ लगता है (वास्तव में यह < काम के 5 मिनट) है, लेकिन आपको बहुत सारी चीज़ें मुफ्त में मिलती हैं। अब आप gradle test चला सकते हैं और यह आपके परीक्षण चलाएगा और जुनीट एक्सएमएल का उत्पादन करेगा जो आप अपनी प्रोजेक्ट निर्देशिका में build/test-reports में उपयोग कर सकते हैं।

+1

ग्रैडल का उपयोग करने के लिए छोटे धक्का के लिए धन्यवाद। जबकि मेरा जवाब (स्पष्ट रूप से) मेरी समस्या हल हो गया, 50pt बक्षीस तुम्हारा है। –

+0

धन्यवाद :) - मुझे लगता है कि आप ग्रैडल से प्यार करेंगे। –

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