Maven –> Gradle
首先安装 gradle:Mac 安装
brew install gradle
Ubuntu 安装
apt install gradle
Maven 项目切换 Gradle 项目, 再 Maven 根目录下运行:
gradle init –type pom
运行成功之后运行命令 gradle build,成功之后删除 pom.xml 即可。
使用 jacoco 分析单元测试
jacoco 是一个分析单元测试覆盖率的工具,使用它运行单元测试后,可以给出代码中那些部分被单元测试到,哪些部分没有被单元测试覆盖,并且还会给出整个项目的单元测试覆盖情况。在 build.gradle 中添加 jacoco 插件
apply plugin: ‘jacoco’
运行命令进行单元测试分析
gradle jacocoTestReport
或者可以再 Gradle 的工具菜单中 Tasks -> other -> jacocoTsestReport 可以直接启动单元测试的分析。在项目中 build 目录下可以看到 jacoco 目录,以及 reports/test/html 目录,后者主要是 jacoco 生成的报告。
使用 SonarQube 做代码质量检查
SonarQube 是一个开源的代码质量管理系统,支持超过 25 种编程语言,提供重复代码、编码标准、单元测试、单元测试覆盖率,代码复杂度,潜在 Bug、注释和软件设计的报告等。在 gradle 中使用 SonarQube 首先要添加依赖,在编译脚本中添加:
buildscript {
repositories {
maven {url “https://plugins.gradle.org/m2/”}
}
dependencies {
classpath(“org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6-rc1”)
classpath(“org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE”)
}
}
添加插件:
apply plugin: “org.sonarqube”
配置 SonarQube:
sonarqube {
properties {
property “sonar.sourceEncoding”, “UTF-8”
property “sonar.host.url”, “https://sonarcloud.io”
property “sonar.jdbc.url”, “jdbc:mysql://my.server.com/sonar”
property “sonar.jdbc.driverClassName”, “com.mysql.jdbc.Driver”
property “sonar.login”, “test”
property “sonar.password”, “test”
}
}
或者只使用 token 上传分析结果即可:
property “sonar.login”, “token”
SonarQube 本身并没有提供单元测试覆盖率的工具,需要在使用 jacoco 的分析结果,在 SonarQube 中添加 jacoco 相关的配置
sonarqube {
properties {
property “sonar.jacoco.reportPath”, “$rootDir/build/jacoco/test.exec”
property “sonar.jacoco.itReportPath”, “$rootDir/build/jacoco/acceptanceTest.exec”
property “sonar.jacoco.excludes”, “*/st/*”
property “sonar.sourceEncoding”, “UTF-8”
property “sonar.host.url”, “https://sonarcloud.io”
property “sonar.jdbc.url”, “jdbc:mysql://my.server.com/sonar”
property “sonar.jdbc.driverClassName”, “com.mysql.jdbc.Driver”
property “sonar.login”, “test”
property “sonar.password”, “test”
}
}
运行命令 gradle sonarqube 即可对代码进行分析,并上传分析结果,因为 SonarQube 的分析依赖 jacoco 的单元测试分析,所以需要先运行命令 gradle jacocoTestReport。最终需要运行的组合命令是:
gradle jacocoTestReport
gradle sonarqube