use*_*532 2 android unit-testing build.gradle android-gradle-plugin sonarqube
我有Sonar分析的Android项目.我看到了所有问题但没有通过单元测试覆盖.我尝试了很多东西,但仍然无法使其正常工作.当我调用'gradlew createDebugCoverageReport'时,它将在build/reports/coverage/debug中创建包含大量文件(如report.xml和index.html)的目录,其中包含测试覆盖率数据.但在Coars的Coverage下,我得到的信息是"此组件没有覆盖详细信息".我怎样才能让它发挥作用?
命令序列:
gradlew clean assemble
gradlew createDebugCoverageReport
gradlew sonarRunner
Run Code Online (Sandbox Code Playgroud)
的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "cz.meteocar.unit"
minSdkVersion 16
targetSdkVersion 20
versionCode 3
versionName "1.0.2"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
testCoverageEnabled = true
}
}
}
apply plugin: 'sonar-runner'
sonarRunner {
sonarProperties {
property "sonar.host.url", "http://localhost:9000" // Address of Sonar server
property "sonar.sources", "src/main/java" // Sources
property "sonar.projectName", "Meteocar" // Name of your project
property "sonar.projectVersion", "1.0.2" // Version of your project
property "sonar.projectDescription", "Sonar" // Description of your project
property "sonar.junit.reportsPath", "build/reports/coverage/"
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('libs/mbassador-1.2.0.jar')
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.android.support:support-v4:20.0.0'
compile 'org.apache.commons:commons-lang3:3.0'
compile 'com.jjoe64:graphview:4.0.1'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.9.5'
testCompile 'org.powermock:powermock-api-mockito:1.6.1'
testCompile 'org.powermock:powermock-module-junit4-rule-agent:1.6.1'
testCompile 'org.powermock:powermock-module-junit4-rule:1.6.1'
testCompile 'org.powermock:powermock-module-junit4:1.6.1'
testCompile 'org.json:json:20140107'
}
Run Code Online (Sandbox Code Playgroud)
您可以使用Jacoco
覆盖结果.它适用于sonar
:
1.安装Android
插件SonarQube
2.添加jacoco plugin
并创建一个gradle task
on Gradle
来生成coverage
文件,如:
apply plugin: 'jacoco'
jacoco {
version "0.7.1.201405082137"
}
task jacocoTestReport(type: JacocoReport, dependsOn: "testDebugUnitTest") {
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled = true
html.enabled = true
}
classDirectories = fileTree(
dir: 'build/intermediates/classes/debug/com/yourapppackagename',
excludes: ['**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*'])
sourceDirectories = files('src/main/java')
executionData = files('build/jacoco/testDebugUnitTest.exec')
doFirst {
files('build/intermediates/classes/debug').getFiles().each { file ->
if (file.name.contains('$$')) {
file.renameTo(file.path.replace('$$', '$'))
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
3. sonar.properties
在根目录上创建文件并包含 coverage文件路径:
sonar.jacoco.reportPath=sdk/build/jacoco/testDebugUnitTest.exec
sonar.junit.reportsPath=sdk/build/test-results/debug
Run Code Online (Sandbox Code Playgroud)
4.Run jacoco gradle task
:
./gradlew clean assembleDebug jacocoTestReport
Run Code Online (Sandbox Code Playgroud)
5.Run sonar analyses
归档时间: |
|
查看次数: |
2288 次 |
最近记录: |