2016-10-10 24 views
5

मेरे पास एक build.gradle फ़ाइल है जो सफलतापूर्वक यूनिट और एकीकरण परीक्षण को अलग से या एक साथ चला सकती है (जैसे कमांड परीक्षण एकीकरण के साथ टेस्ट एक साथ)। दोनों जूनिट का उपयोग करते हैं, मैं ग्रैडल 3 का उपयोग कर रहा हूं, और यह एक एंड्रॉइड प्रोजेक्ट नहीं है। सफलता के बारे में एक रिपोर्ट अलग-अलग निर्देशिकाओं में प्रत्येक के लिए बनाई जाती है। मैं इकाई परीक्षण कवरेज ग्रेडल परीक्षण jacoco के साथ परीक्षण कवरेज सफलतापूर्वक जेकोको रिपोर्ट भी उत्पन्न कर सकता हूं। मैं ग्रेडिंग एकीकरण का उपयोग करके अन्यथा-काम कर रहे एकीकरण परीक्षणों के लिए कवरेज रिपोर्ट प्राप्त करने में असमर्थ हूं। टेस्ट जैकोको, हालांकि परीक्षण सफलतापूर्वक चलाया जाता है और एकीकरण Test.exec फ़ाइल उत्पन्न होती है।जैकोको प्लगइन के साथ build.gradle एकीकरण परीक्षणों के लिए कवरेज रिपोर्ट उत्पन्न नहीं करता है

अधिक स्पष्ट होने के लिए, मुझे बिल्ड/रिपोर्ट/index.html में इकाई परीक्षण कवरेज रिपोर्ट मिलती है, और निर्माण/रिपोर्ट/परीक्षण/index.html में जूनिट रिपोर्ट और बिल्ड/रिपोर्ट/एकीकरण टेस्ट/index.html। एक बिल्ड/रिपोर्ट/जैकोको निर्देशिका बनाई गई है लेकिन इसमें केवल एक खाली "परीक्षण" निर्देशिका है। बिल्ड/इसमें एक जैकोको/निर्देशिका भी शामिल है, जिसमें .exec फ़ाइलें और क्लासपाथडंप दोनों शामिल हैं।

यहाँ मेरी संक्षिप्त build.gradle

apply plugin: 'java' 
apply plugin: 'application' 
apply plugin: 'jacoco' 

repositories { 
    mavenCentral() 
} 

sourceSets { 
    main { 
     java { 
      srcDirs = ['src/java'] 
     } 
     test { 
      java { 
       srcDirs = ['test/java'] 
      } 
     } 
     resources { 
      srcDirs = ['src/java', 'conf', 'resource'] 
     } 
    } 

    integrationTest { 
     java { 
      compileClasspath += main.output + test.output 
      runtimeClasspath += main.output + test.output 
      srcDir file('integration_test/java') 
     } 
    } 
} 

test { 
    jacoco { 
     append = false 
     destinationFile = file("$buildDir/jacoco/jacocoTest.exec") 
     classDumpFile = file("$buildDir/jacoco/classpathdumps") 
    } 
} 

configurations { 
    integrationTestCompile.extendsFrom testCompile 
    integrationTestRuntime.extendsFrom testRuntime 
} 

/* SNIP */ 

task integrationTest(type: Test) { 
    dependsOn startserver 

    testClassesDir = sourceSets.integrationTest.output.classesDir 
    classpath = sourceSets.integrationTest.runtimeClasspath 
} 
integrationTest.finalizedBy stopserver 

check.dependsOn integrationTest 
integrationTest.mustRunAfter test 

tasks.withType(Test) { 
    reports.html.destination = file("${reporting.baseDir}/${name}") 
} 

jacoco { 
    toolVersion = "0.7.6.201602180812" 
} 

jacocoTestReport { 
    reports { 
     xml.enabled false 
     csv.enabled false 
     html.destination "$buildDir/reports" 
    } 
} 

मैं मौजूदा, दो रिपोर्टों विलय JUnit एकीकरण परीक्षण रिपोर्ट मैं पहले से ही है पैदा करने, और Maven और चींटी के बारे में इसी तरह की लेकिन अंततः बेकार सवाल के बारे में सवाल देखा है है। मुझे मिली सबसे नज़दीकी चीज this थी, लेकिन इससे कुछ भी मैंने अपनाने की कोशिश नहीं की है। ऐसा लगता है कि similar question है, लेकिन उनके निर्माण के कम से कम .gradle के साथ, और एकमात्र उत्तर 0-अप-वोट है, पिछले लिंक में प्रश्न के लेखक द्वारा स्वीकार्य प्रतिक्रिया नहीं है।

के बाद से यह पहले से ही बहुत लंबा है, मैं भी एक से अधिक यहाँ है ज्यादा प्रदान करने के लिए नहीं करना चाहता था, लेकिन मैं और अधिक प्रदान करने के लिए अगर कुछ भी स्पष्ट नहीं है खुश हूँ।

मैं सत्यापित किया है कि के रूप में एकीकरण परीक्षणों अधिलेखन इकाई परीक्षण के परिणाम के रूप में हो रहा है मूर्ख कुछ भी नहीं - नियमित रूप से परीक्षण के बिना एकीकरण परीक्षण और jacoco चल भी अनुरूप फ़ाइलों का उत्पादन नहीं करता।

क्या एकीकरण परीक्षण कवरेज प्राप्त करने के लिए मैं कुछ भी कर सकता हूं?

[प्रथम संपादित करें] मैं एक छोटे से Github रेपो कि सब कुछ इस समस्या को पुन: पेश करने की जरूरत है बना लिया है: https://github.com/micseydel-tile/gradle-jacoco-integration-test

उत्तर

1

आप कर सकते हैं दोनों परीक्षण कार्य एक ही गंतव्य फ़ाइल पर लिखने और वे मौजूदा फ़ाइल को संलग्न यदि कोई। इस तरह आप परीक्षण कार्यों में से किसी एक को चला सकते हैं और HTML रिपोर्ट में व्यक्तिगत रूप से कवरेज देख सकते हैं। यह कोड स्निपेट अपने छोटे GitHub रेपो

`task integrationTest(type: Test) {jacoco { 
    append = true 
    destinationFile = file("$buildDir/jacoco/jacocoTest.exec") 
    classDumpFile = file("$buildDir/jacoco/classpathdumps") 
} 
testClassesDir = sourceSets.integrationTest.output.classesDir 
classpath = sourceSets.integrationTest.runtimeClasspath}` 

आप बस jacoco कोड ब्लॉक जोड़ने के लिए और संलग्न चालू कर सकते हैं से है।

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