android gradle + junit + jacoco 集成jenkins,sonar系统
来源:互联网 发布:js插件的写法 编辑:程序博客网 时间:2024/05/16 09:34
首先gradle 文件配置如下:
apply plugin: 'jacoco'android { compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig { applicationId "com.javaandroidunittestdemo" minSdkVersion 23 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }debug{ testCoverageEnabled true } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.+' testCompile 'junit:junit:4.12'}jacoco{ toolVersion = "0.7.7.201606060606"} task jacocoTestReport(type: JacocoReport,dependsOn:"testDebugUnitTest") { def coverageSourceDirs = [ "src" ] group = "Reporting" description = "Generate Jacoco coverage reports after running tests."//ignoreFailures = true jacoco { reportsDir = file("../report/test-results/") }def utilTest = '/build/jacoco/testDebugUnitTest.exec'executionData = fileTree(utilTest) reports { xml{ enabled true //Following value is a file destination "${buildDir}/reports/jacoco/xml/jacoco.xml" } csv.enabled false html{ enabled true //Following value is a folder destination "${buildDir}/reports/jacoco/html" } } classDirectories = fileTree( dir: "./build/intermediates/classes/debug", excludes: ['**/R.class', '**/R$*.class', '**/*$ViewInjector*.*', '**/BuildConfig.*', '**/Manifest*.*'] ) sourceDirectories = files(coverageSourceDirs) additionalSourceDirs = files(coverageSourceDirs) }
注意:这个
debug{ testCoverageEnabled true }
一定要打开,因为我们对debug进行单元测试。
在jenkins上我们配置gradle script:
然后配置sonar-scanner:
指明 jacoco.exec文件和 test-result文件路径。
有的用户直接在gradle 脚本里面添加build.
这样就是直接执行用户的 gradle脚本。
但是用户有时候在脚本里面配置了其他测试:
def coverageSourceDirs = [ '../epa_new_android/src/main/java']task jacocoTestReport(type: JacocoReport, dependsOn: ["testDebugUnitTest", "connectedDebugAndroidTest"]) { doFirst { delete('../report/testUnitTest.exec') delete('../report/androidTestUnitTest.ec')// File file1 = new File('../report/test-results/jacocoTestReport');// file1.deleteDir(); delete('../report/test-results/') } jacoco { reportsDir = file("../report/test-results/") } group = "Reporting" description = "Generate Jacoco coverage reports" classDirectories = fileTree( dir: '/build/intermediates/classes/debug', excludes: ['**/R.class', '**/R$*.class', '**/*$ViewInjector*.*', '**/BuildConfig.*', '**/Manifest*.*'] ) def utilTest = '/build/jacoco/testDebugUnitTest.exec' def androidTestDir = '/build/outputs/code-coverage/connected/' def androidTest def androidTestFileName; FileTree iotTree = fileTree(dir: androidTestDir, includes: ['*.ec']) iotTree.each { File file -> androidTestFileName = file.name androidTest = file.path } additionalSourceDirs = files(coverageSourceDirs) sourceDirectories = files(coverageSourceDirs) executionData = files(utilTest, androidTest) reports { xml.enabled = true html.enabled = true } doLast { copy { from utilTest into '../report' rename("testDebugUnitTest.exec", 'testUnitTest.exec') } copy { from androidTest into '../report' rename(androidTestFileName, 'androidTestUnitTest.ec') } copy { from "/build/test-results" into '../report/test-results/unittest' } }}connectedDebugAndroidTest是关于模拟机的测试,这样在执行build gradle 之前需要改造。
阅读全文
0 0
- android gradle + junit + jacoco 集成jenkins,sonar系统
- 持续集成-jenkins+maven+sonar+testng+jacoco
- Android持续集成--JENKINS+GRADLE+JACOCO+SONARQUBE(一)
- Android持续集成--JENKINS+GRADLE+JACOCO+SONARQUBE(二)
- Android持续集成--JENKINS+GRADLE+JACOCO+SONARQUBE(三)
- Android持续集成--JENKINS+GRADLE+JACOCO+SONARQUBE(四)
- sonar集成jenkins管理
- Jenkins 集成 Sonar
- Jenkins和Sonar集成
- sonar 集成代码测试覆盖率插件jacoco
- sonar:gradle集成sonar插件配置方式
- maven+jenkins+sonar集成搭建
- maven+jenkins+sonar集成搭建
- Gradle构建系统简介及在Gradle中集成覆盖率工具Jacoco并使用
- SonarQube+Sonar-runner+Jacoco+Gradle搭建代码质量检测环境
- 覆盖率工具-jacoco 集成进jenkins
- CI 持续集成: Jenkins + Maven + Tomcat+ Jacoco
- Android Jenkins+Git+Gradle持续集成打包
- 回顾一下web
- 工欲善其事,必先利其器-java高级测试进阶之接口自动化测试工具类(一)处理http请求。
- Mysql cannot allocate memory for the buffer pool 解决方法
- 区块链和物联网结合的挑战和前景
- 《Spring实战 第4版》的阅读笔记 -----且行且珍惜
- android gradle + junit + jacoco 集成jenkins,sonar系统
- 轻松理解 Android Binder,只需要读这一篇
- 完美解决listView滚动条隐藏的问题!
- 第四章:数据检索
- JDK工具查看内存中活跃对象数量
- myeclipse连接mysql数据库详细步骤
- 笔记42 | Android加载器Adapter的深入学习篇
- 通过Spring Session实现新一代的Session管理
- VC++串口通信编程详解