2011-10-13 20 views
5

qUnit के साथ जेनकींस को आसानी से कैसे एकीकृत करें? मैं परीक्षण चलाने के लिए असली ब्राउज़र (फ़ायरफ़ॉक्स और क्रोम जैसे) का उपयोग करूंगा। मेरा सर्वर रेडहाट 6.1 लिनक्स पर चलता है। मुझे लगता है कि मेरे पास सभी आवश्यक प्लगइन्स/पुस्तकालय हैं लेकिन मुझे अभी भी यह नहीं पता कि इसे कैसे काम करना है। मैं जेनकींस के साथ पहली बार (सर्वर की तरफ) काम कर रहा हूं।जेनकींस + qUnit

// संपादित करें:

यह अद्भुत होगा कोई विचार कैसे कवरेज रिपोर्ट भी निर्माण करने के लिए साझा कर सकते हैं यदि।

अग्रिम धन्यवाद :)।

+0

डुप्लिकेट (http://stackoverflow.com/questions/9482493/qunit-jscoverage-jenkings) [QUnit और जेनकींस पर इस सवाल]:

मैं सभी विवरण यहाँ के साथ एक ब्लॉग पोस्ट में लिखा था। संक्षेप में: अपनी नौकरी के लिए पोस्ट-बिल्ड क्रियाओं में, JUnit परीक्षण परिणाम रिपोर्ट प्रकाशित करें और अपनी जूनिट एक्सएमएल फाइलें (या उनकी फ़ाइल पैटर्न) निर्दिष्ट करें। –

उत्तर

7

जेनकिंस और क्विनीट कहने से पहेली का केवल एक हिस्सा है। आपको अभी भी एक वेब ब्राउज़र की आवश्यकता है और डिस्क पर QUNit परिणामों से JUnit शैली XML फ़ाइल प्राप्त करने का एक तरीका है। हालांकि कई ब्राउज़रों को नियंत्रित करने के लिए सेलेनियम और वेबड्राइवर है, शुरू करने का सबसे आसान तरीका है PhantomJS (http://phantomjs.org/) का उपयोग करना। फ़ैंटॉमजेएस एक हेडलेस वेबकिट आधारित ब्राउज़र है जिसका अर्थ केवल इस तरह के कार्यों के लिए है।

यदि आप इस पृष्ठ के "टेस्ट फ्रेमवर्क" अनुभाग ब्राउज़ करते हैं (http://code.google.com/p/phantomjs/wiki/WhoUsesPhantomJS) तो आपको QUnit चलाने के लिए कई स्क्रिप्ट दिखाई देगी (कुछ JSCoverage समर्थन के साथ)। Phantomjs-jscoverage-qunit स्क्रिप्ट ऐसा लगता है कि यह उन सभी प्रमुख बिंदुओं को हिट करेगा, जिन्हें आप हिट करना चाहते हैं, जैसा कि यूनाइटेड करता है। दोनों दिखते हैं कि उन्हें कुछ परेशान करने की आवश्यकता होगी हालांकि उन्हें जाने के लिए।

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

संपादित करें: अब कई महीने बाद, यह मुझे स्पष्ट हो गया है कि वेबड्राइवर सेलेनियम का भविष्य है (शायद यह मुझे वापस स्पष्ट होना चाहिए था, लेकिन यह नहीं था)। इसके अलावा, फ़ैंटॉमजेएस अब GhostDriver के माध्यम से वेबड्राइवर के साथ काम करता है, इसलिए केवल वेबड्राइवर का समर्थन करना और लक्ष्य के रूप में फ़ैंटॉमजेएस चुनना शायद सबसे अच्छी सलाह है।

0

यदि वास्तविक ब्राउज़र का उपयोग कर रहे हैं: bunyip (https://github.com/ryanseddon/bunyip) का उपयोग कर एक साथ कई ब्राउज़रों में QUNit परीक्षण चलाएं। यह यति के शीर्ष जो JUnit एक्सएमएल संगत रिपोर्ट प्रदान कर सकते हैं पर बनाया गया है -

जेनकींस

द्वारा इस प्रकार पठनीय हैं PhantomJS का उपयोग कर (बिना सिर ब्राउज़र है जो लगभग एक आधारित एक वास्तविक वेबकिट तरह काम करता है): बस यहाँ https://stackoverflow.com/a/17553889/998008 साझा माध्यम से गुजरने के पर अपाचे एंट बिल्ड स्क्रिप्ट में QUNit परीक्षण धावक कार्य जोड़ना। वीसीएस से प्रोजेक्ट वर्किंग कॉपी खींचते समय जेनकींस स्क्रिप्ट चलाते हैं। आपको जेनकिंस प्रोजेक्ट में आउटपुट फ़ाइल का स्थान निर्दिष्ट करने की आवश्यकता है। आउटपुट JUnit एक्सएमएल संगत है।

1

यह प्रश्न पोस्ट होने के बाद से एक वर्ष से अधिक हो गया है, लेकिन TestSwarm के लिए है। मेरी आम आदमी की समझ यह है कि आप टेस्टस्वार्म का उपयोग अपने सभी महत्वपूर्ण ब्राउज़रों में लगातार अपने QUNit परीक्षणों को चला सकते हैं। यह GitHub पर खुलासा हुआ है।

1

प्रकटीकरण: मैं आर्किलीयन परियोजना का योगदानकर्ता हूं।

आप जेनकिंस पर अपने QUNit परीक्षण निष्पादित करने के लिए Arquillian Qunit Extension ओपन सोर्स एक्सटेंशन का उपयोग कर सकते हैं। सामान्य रूप से, Arquillian Qunit Extension निरंतर एकीकरण वातावरण में आसानी से उपयोग किया जा सकता है। इस GitHub repo पर आप Arquillian Qunit Extension पर Travis CI हेडलेस मशीनों पर QUNit परीक्षण निष्पादित करने के लिए उपयोग किए जा सकने का वास्तविक उदाहरण पा सकते हैं।

Arquillian एक जेबॉस सामुदायिक परियोजना है।

Arquillian Qunit Extension एक Arquillian एक्सटेंशन है जो QUNit जावास्क्रिप्ट परीक्षण को स्वचालित करता है। Arquillian Qunit Extension जुनीट परीक्षण ढांचे के साथ पारदर्शी रूप से एकीकृत करता है।

आप इस README file बारे में अधिक जानकारी पा सकते हैं। इसके अलावा, वहाँ एक showcase जो Maven के माध्यम से क्रियान्वित किया जा सकता है और कैसे सेटअप अपने परीक्षण मामले को दर्शाता है।

इस एक्सटेंशन का उपयोग, आप QUnit परीक्षण फांसी के दौरान एक संग्रह की तैनाती और/या एक भी निष्पादन में एक या अधिक QUnit टेस्ट सूट पर अमल करने का विकल्प है। इसके अलावा आप @InSequence एनोटेशन का उपयोग कर QUnit टेस्ट सूट निष्पादन आदेश को परिभाषित कर सकते हैं।

उदाहरण के लिए, मान लीजिए कि आप दो क्विनीट टेस्ट सूट (qunit-test-ajax.html और qunit-test-dom.html) निष्पादित करना चाहते हैं और आपके परीक्षण सूट में शामिल आपके QUNit परीक्षण वेब पर अजाक्स अनुरोध करते हैं सर्विस। जाहिर है, परीक्षणों को निष्पादित करते समय आपको होस्ट पर होने के लिए इस वेब सेवा की आवश्यकता होती है। आर्किलीयन स्वचालित रूप से एक कंटेनर में वेब सेवा की तैनाती कर सकता है। एक ऐसी स्थिति में अपने Arquillian परीक्षण का मामला दिखेगा की तरह:

@RunWith(QUnitRunner.class) 
@QUnitResources("src/test/resources/assets") 
public class QUnitRunnerTestCase { 

    private static final String DEPLOYMENT = "src/test/resources/archives/ticket-monster.war"; 

    /** 
     * Creates the Archive which will be finally deployed on the AS. 
     * 
     * @return Archive<?> 
     */ 
    @Deployment() 
    public static Archive<?> createDeployment() { 
     return ShrinkWrap.createFromZipFile(WebArchive.class, new File(DEPLOYMENT)); 
    } 

    /** 
     * Execute the qunit-tests-ajax.html QUnit Test Suite. 
     */ 
    @QUnitTest("tests/ticketmonster/qunit-tests-ajax.html") 
    @InSequence(1) 
    public void qunitAjaxTests() { 
     // empty body - only the annotations are used 
    } 

    /** 
     * Execute the qunit-random-tests.html QUnit Test Suite. 
     */ 
    @QUnitTest("tests/ticketmonster/qunit-random-tests.html") 
    @InSequence(2) 
    public void qunitRandomTests() { 
     // empty body - only the annotations are used 
    } 
} 
0

BlanketJS एक शानदार कोड कवरेज उपकरण है जो QUnit साथ अच्छी तरह से काम करता है। मैं इसे लगभग एक साल से उपयोग कर रहा हूं।

जेनकिन्स एकीकरण के लिए, मैं गड़बड़ी का उपयोग करता हूं जो कि 0 के साथ निकलता है यदि ग्रंट कार्य विफल रहता है, और 1 यदि यह गुजरता है, तो यह जेनकिंस के साथ पूरी तरह से एकीकृत होता है।

कोई मौजूदा ग्रंट प्लगइन नहीं था जो कंबल और क्वीनिट को एकसाथ संभाला था, इसलिए मैंने अपनी खुद की ग्रंट प्लगइन लिखना घायल कर दिया। प्लगइन न्यूनतम थ्रेसहोल्ड के "प्रवर्तन" का समर्थन करता है, या फिर ग्रंट कार्य विफल रहता है। http://www.geekdave.com/2013/07/20/code-coverage-enforcement-for-qunit-using-grunt-and-blanket/ की