2014-01-24 96 views
9

gradle build正在創建聲納亞軍拾取的jacoco報告。將聲納結果推送到聲納服務器後,即使所有測試成功運行,也會顯示單元測試覆蓋率,但單元測試成功率爲0。沒有單元測試成功報告聲納

15:52:36.087 INFO - Source dirs: /poc-sonar/src/main/java 
15:52:36.087 INFO - Test dirs: /poc-sonar/src/test/java, /Volumes/Disk/Development/poc-sonar/src/test/groovy 
15:52:36.088 INFO - Binary dirs: /poc-sonar/build/classes/main 

這提高了第一個問題:在聲納亞軍日誌我看到下面的項目報告源和類場所

尋找是否有聲納看到分析編譯測試類?

再往下數:

15:52:37.435 INFO - Sensor JaCoCoSensor... 
15:52:37.445 INFO - Analysing /poc-sonar/build/jacoco/test.exec 
15:52:37.546 INFO - No information about coverage per test. 
15:52:37.548 INFO - Sensor JaCoCoSensor done: 113 ms 
15:52:38.105 INFO - Execute decorators... 
15:52:38.580 INFO - Store results in database 

Jacoco已經拿起test.exec文件,但報告"No information about coverage per test"

是什麼日誌語句是什麼意思?聲納服務器實際上暴露了正確的覆蓋範圍!這是Sonar報告失敗測試成功的指標嗎?什麼是缺少用於獲取單元

Unit Tests Coverage 
50,0% 
50,0% line coverage 

Unit test success 
0 tests 

全gradle這個build.script:

ext { 
    spockVersion = '0.7-groovy-2.0' 
    groovyVersion = '2.2.1' 
} 

apply plugin: 'idea' 
apply plugin: 'java' 
apply plugin: 'groovy' 
apply plugin: 'jacoco' 
apply plugin: 'sonar-runner' 

group = "poc" 
version = "1.0.0-SNAPSHOT" 

sourceCompatibility = 1.7 
targetCompatibility = 1.7 

repositories { 
    maven { 
     credentials { 
      username "${artifactoryUsername}" 
      password "${artifactoryPassword}" 
     } 
     url "${artifactoryContextUrl}" 
    } 
} 

dependencies { 
    testCompile "junit:junit-dep:4.11" 
    testCompile "org.codehaus.groovy:groovy-all:$groovyVersion" 
    testCompile "org.spockframework:spock-core:$spockVersion" 
} 

tasks.withType(Test) { task -> 
    jacoco { 
     destinationFile = file("$buildDir/jacoco/${task.name}.exec") 
    } 
} 

sonarRunner { 
    sonarProperties { 
     property 'sonar.projectName', rootProject.name 
     property 'sonar.projectDescription', rootProject.name 

     // sonar server and database 
     property "sonar.host.url", sonarHostUrl 
     property "sonar.jdbc.url", sonarJdbcUrl 
     //property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver" 
     property "sonar.jdbc.username", sonarJdbcUsername 
     property "sonar.jdbc.password", sonarJdbcPassword 
     property 'sonar.sourceEncoding', 'UTF-8' 
    } 
} 

tasks.sonarRunner.dependsOn = [] 
+1

通過日誌去一次經過我發現多了一個可疑的警告: '16:31:18.438 WARN - 未發現報告路徑:/ POC-聲納/建設/聲納/建設/萬無一失-reports' 聲納亞軍正在錯誤的地方尋找測試報告文件。問題是如何將Sonar runner配置爲查看'$ project.buildDir/test-results'這是測試報告輸出的默認值? –

回答

16

近聲納版本中,聲納性能檢測報告位置已更名從sonar.surefire.reportsPathsonar.junit.reportsPath。因此您可能需要手動設置後者。例如:

apply plugin: "sonar" 

subprojects { 
    apply plugin: "java" 
    sonarRunner { 
     sonarProperties { 
      property "sonar.junit.reportsPath", test.reports.junitXml.destination 
     } 
    } 
} 
+1

+1:'property「sonar.junit.reportsPath」,「$ buildDir/test-results /」'爲我做了詭計。 –

+3

Gradle 1.12將附帶解決此問題。 –

+0

它確實工作。謝謝! –