2016-10-07 9 views
9

मैं सिर्फ जेनकींस के साथ शुरू कर दिया हैकैसे जेनकींस पाइपलाइन परियोजना में JUnit परीक्षण में गिना जाता है का उपयोग करने की

मेरे फ्रीस्टाइल परियोजना इस

MyJenkinsFreestyle - #79 Unstable after 4 min 59 sec (Open) 
Test Status: 
    Passed: 2482, Failed: 13, Skipped: 62 

अब मैं करने के लिए एक ही स्थानांतरित कर दिया की तरह स्लैक में JUnit परीक्षण परिणामों की रिपोर्ट करने के लिए इस्तेमाल पाइप लाइन परियोजना, और सभी टेस्ट स्थिति

done MyPipelineProject #68 UNSTABLE 

मैं समझता हूँ कि मैं सुस्त करने के लिए, एक भेजने के लिए संदेश के निर्माण के लिए राशि की जरूरत नहीं है कि स्लैक अधिसूचना को छोड़कर अच्छा है डी मैंने अभी तक उपरोक्त किया है।

केवल मुद्दा मैं कैसे परीक्षण स्थिति पढ़ा करते है - पारित कर दिया गिनती, विफल रही है गिनती आदि यह "परीक्षण सारांश" जेनकींस ढीला-प्लगइन commit में कहा जाता है, और यहाँ स्क्रीनशॉट testsummaryimage

है तो मैं जेनकिंस पाइपलाइन परियोजना में जूनिट परीक्षण गिनती/विवरण कैसे प्राप्त करूं? - ताकि सूचनाओं में इन्हें सूचित किया जा सके।

अद्यतन: फ्रीस्टाइल प्रोजेक्ट में, स्लैक अधिसूचना के पास "परीक्षण सारांश" है, और परीक्षण सारांश के लिए ऑप्ट (या नहीं) का कोई विकल्प नहीं है।

पाइपलाइन परियोजना में, मेरी "JUnit" "JUnit परीक्षण के परिणाम प्रकाशित करें" का आदेश स्लैक अधिसूचना भेजने से पहले है।

तो कोड में उन पंक्तियों के इस तरह दिखना (इस अंतिम चरण के अंतिम लाइनें हैं):

bat runtests.bat 
junit 'junitreport/xml/TEST*.xml' 
slackSend channel: '#testschannel', color: 'normal', message: "done ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL}|Open>)"; 
+0

यह कैसे काम किया:

def testSummary = getTestSummary() 

यह करने के लिए कुछ इसी तरह वापस आ जाएगी पुराने फ्री स्टाइल नौकरी में: डीडीडी स्लैक अधिसूचना बिल्ड प्लगइन आपके लिए परीक्षण सारांश तैयार करता है? यदि हां, तो क्या आपने स्लैक अधिसूचना भेजने से पहले "जुनीट परीक्षा परिणाम प्रकाशित करें" चलाया था? – izzekil

उत्तर

12

Cloudbees की this presentation से मैंने पाया है कि यह "निर्माण" वस्तु के माध्यम से संभव हो जाना चाहिए। यह

def testResult = build.testResultAction 
def total = testResult.totalCount 

की तरह कोड है लेकिन currentBuild testResultAction के लिए पहुँच प्रदान नहीं करता है।

तो खोज रखा और इस पोस्ट "react on failed tests in pipeline script" पाया। वहाँ रॉबर्ट Sandell "pro tip"

प्रो टिप दे दी है, कुछ "कस्टम श्वेतसूची" की आवश्यकता है:

AbstractTestResultAction testResultAction = currentBuild.rawBuild.getAction(AbstractTestResultAction.class) 
if (testResultAction != null) { 
    echo "Tests: ${testResultAction.failCount}/${testResultAction.failureDiffString} failures of ${testResultAction.totalCount}.\n\n" 
} 

यह एक आकर्षण की तरह काम किया - सिर्फ इतना है कि मैं का चयन रद्द करने के लिए "ग्रूवी सैंडबॉक्स" चेकबॉक्स था। अब मैं निर्माण लॉग

Tests: 11/±0 failures of 2624 

में इन है अब मैं इस का उपयोग स्ट्रिंग तैयार करने के लिए परीक्षण के परिणाम के साथ ढीला में सूचित करने के लिए होगा।


अद्यतन:

अंत में, समारोह मैं निम्नलिखित तरह उत्पादन प्राप्त करने के लिए प्रयोग किया जाता है (असफल परीक्षण के बाद नोट "विफलता diff" बहुत उपयोगी है)

Test Status: 
    Passed: 2628, Failed: 6/±0, Skipped: 0 

निम्नलिखित है :

import hudson.tasks.test.AbstractTestResultAction 

@NonCPS 
def testStatuses() { 
    def testStatus = "" 
    AbstractTestResultAction testResultAction = currentBuild.rawBuild.getAction(AbstractTestResultAction.class) 
    if (testResultAction != null) { 
     def total = testResultAction.totalCount 
     def failed = testResultAction.failCount 
     def skipped = testResultAction.skipCount 
     def passed = total - failed - skipped 
     testStatus = "Test Status:\n Passed: ${passed}, Failed: ${failed} ${testResultAction.failureDiffString}, Skipped: ${skipped}" 

     if (failed == 0) { 
      currentBuild.result = 'SUCCESS' 
     } 
    } 
    return testStatus 
} 
6

@ विक्रमस्जन के उत्तर पर विस्तार करने के लिए, मैं वही पाने के लिए उपयोग करता हूं मेरी Jenkinsfile में ई परीक्षण सारांश:

import hudson.tasks.test.AbstractTestResultAction 
import hudson.model.Actionable 

@NonCPS 
def getTestSummary = { -> 
    def testResultAction = currentBuild.rawBuild.getAction(AbstractTestResultAction.class) 
    def summary = "" 

    if (testResultAction != null) { 
     def total = testResultAction.getTotalCount() 
     def failed = testResultAction.getFailCount() 
     def skipped = testResultAction.getSkipCount() 

     summary = "Test results:\n\t" 
     summary = summary + ("Passed: " + (total - failed - skipped)) 
     summary = summary + (", Failed: " + failed) 
     summary = summary + (", Skipped: " + skipped) 
    } else { 
     summary = "No tests found" 
    } 
    return summary 
} 

मैं तो इस विधि का उपयोग मेरी testSummary चर का दृष्टांत के लिए:

"Test results: 
    Passed: 123, Failed: 0, Skipped: 0" 
+0

धन्यवाद। आपकी पोस्ट ने मुझे अपना फ़ंक्शन भी पोस्ट करने के लिए याद दिलाया ... जिसमें एक और बिट है - विफलताडिफस्ट्रिंग – vikramsjn

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