2014-02-25 93 views
5

我在構建過程中非常成功地集成了Gradle(1.11),Sonar(4.1.1),Java,Scala和Jacoco。我甚至設法獲得有關成功測試數量的信息(感謝Stackoverflow!)。但我有一個問題。集成Sonar,Jacoco,Gradle,ScalaTest與Junit,Java

我似乎無法獲得有關每次測試覆蓋率的信息。有這個信息將是非常好的。

> 15:11:16.514 INFO - Sensor JaCoCoSensor... 15:11:16.535 INFO - 
> Analysing C:\example\gradle-sonar-jacoco-scala\build\jacoco\test.exec 
> 15:11:17.887 INFO - No information about coverage per test. 

項目的簡化版本是:https://github.com/sebastianharko/gradle-sonar-java-jacoco-scalatest-junit

乾杯!

+0

你確定Sonar有這樣的功能嗎?你能不能指出一些指針?我也在評估sonar + maven,但是沒有得到比觀察整體代碼覆蓋更遠的地方。 – Tair

+0

哦,我找到了!如果你沒有這個問題,我甚至不知道這個功能:)所以,謝謝! – Tair

+0

你的github例子是測試java代碼的scala代碼。您是否使用scala測試scala或Java測試java測試覆蓋率報告?我問,因爲我有gradle構建一些scala項目,它總是顯示分別編譯和測試scala和java。 – n0741337

回答

0

看起來你已經有

apply plugin: 'jacoco' 
在gradle.build

,但我沒有看到一個定義,它是把它從gradle.build文件

jacoco { 
    destinationFile = file("$buildDir/jacoco/test.exec") 
} 

如果您打算進行集成和單元測試,它看起來類似於以下內容:

task "integtest"(type: Test, dependsOn: integtestClasses) { 
testClassesDir = sourceSets.integtest.output.classesDir 
classpath = sourceSets.integtest.runtimeClasspath 

    jacoco { 
     destinationFile = file("$buildDir/jacoco/integTest.exec") 
    } 
} 
test { 
    jacoco { 
    destinationFile = file("$buildDir/jacoco/test.exec") 
    } 
} 

與相應的聲納配置項

property "sonar.jacoco.reportPath", "$buildDir/jacoco/test.exec" 
property "sonar.jacoco.itReportPath", "$buildDir/jacoco/integTest.exec" 
+0

非常感謝您的回覆,但它不能解決我的問題:1)目前我沒有任何集成測試,只是單元測試; 2)Jacoco工作正常,代碼覆蓋範圍顯示在Sonar Web Interface中;問題是我沒有看到「每個單獨測試的覆蓋率」..所以如果我有一個名爲test1()的測試和一個名爲test2()的測試,我希望看到test1()覆蓋了10%的代碼,例如,test2()覆蓋了30%的代碼。 – MadSeb

+0

根據我在github中看到的代碼,告訴聲納查看jacoco文件,而不指定jacoco放置.exec的位置。這是設置目標文件的地方。 – RGG

+0

好的sonar somohow確實找出了jacoco文件的位置:請參閱原文:「分析C:\ example \ gradle-sonar-jacoco-scala \ build \ jacoco \ test.exec」;所以jacoco文件的位置似乎不是問題,但我會仔細檢查; – MadSeb

-3

您可能還需要使用Coveralls.io

這是很便宜:只要$ 4.99 /月。並且您可以與Github上的pull請求(分支增加或減少代碼覆蓋率時的跟蹤)以及a very nice UI深入集成,以深入瞭解您的代碼覆蓋範圍。

SBTGradle集成都可用。