Sonarqube scanner使用,需要先安装好环境及配置文件。
在测试工作场景中,经常会遇到下面的问题:
- 1、执行自动化测试用例的时候,只想指定某个测试类,或者某个方法,又或者某一类用例等,怎么办?
-
- 2、想要和 Jenkins 一起进行持续集成,可是用例又不可能在 IDE 里面执行,怎么办?
- 这个时候就需要 Maven 登场了,利用 Maven 的Maven-Surefire-Plugin插件可以帮助我们完成上述的目标!它可以通过命令行的形式来管理我们要执行的用例。
-
- Maven 3.x +
-
- JDK 1.7 +
- 对于我们测试来说,常接触的几个用例管理框架都支持(这里指 Java 技术栈)
-
- Using TestNG
-
- Using JUnit 5 Platform
-
- Using JUnit
- 常用到的 Junit5 相关依赖:
- Maven-Surefire-Plugin:
- 指定编译 JDK 版本:
- 现有如下结构的测试类,在此基础上进行演示:
- 使用 mvn test 命令可以一次性执行所有的用例,执行完之后可以看到控制台中的结果:
- 执行完之后我们打开 target,所有 maven 执行完的结果都会在 target 目录下的 surefire-reports 下:
- 其中:
-
- xml:可用于 Jenkins 解析,文件与测试类对应,里面的内容代表了测试用例的执行情况。
-
- txt:测试结果的命令行输出。
- 使用 mvn -Dtest=${TestClass} 命令可以指定运行测试类,例如
- 我这里要运行 MavenDemo1Test 下的用例,就可以使用 mvn -Dtest=MavenDemo1Test test:
- import org.junit.jupiter.api.Test; ¨K31K
- 执行测试:
- $ mvn -Dtest=MavenDemo1Test test
- 测试结果:
- 我们还可以以 逗号 分隔指定多个测试类执行,例如这里我想执行 MavenDemo1Test 和 MavenDemo2Test:
- mvn -Dtest=MavenDemo1Test,MavenDemo2Test test
- 测试结果:
- 我们可以使用通配符来匹配要执行的测试类,例如这里我利用通配符同时指定测试类 MavenDemo1Test 和 MavenDemo2Test:
- $ mvn -Dtest=MavenDemo*Test test
- 测试结果:
- 当然,上述的测试方式组合起来也是可以的,例如这里利用通配符执行 MavenDemo1Test 和 MavenDemo2Test,再精确指定执行 MavenPackageDemoTest:
- $ mvn -Dtest=MavenDemo*Test,MavenPackageDemoTest test
- 测试结果:
- 除了可以指定执行测试类,还可以指定测试方法,测试类 和 测试方法 之间用 # 隔开即可例如这个我想要指定执行 MavenDemo1Test 中的 test2 方法:
- $ mvn -Dtest=MavenDemo1Test#test2 test
- 测试结果:
- 方法依然可以使用通配符,例如这里要执行 MavenPackageDemoTest 中的方法 MavenPackageTest,可以匹配以 Test 结尾:
- $ mvn -Dtest=MavenPackageDemoTest#*Test test
- 测试结果:
- mvn 也可以指定某个测试类下面的多个方法,使用+号分隔方法,例如指定 MavenDemo1Test 下的方法 test1() 和 test2()。
- $ mvn -Dtest=MavenDemo1Test#test1+test2 test
- mvn 还提供了失败重试,设置失败重试的次数,当用例执行时直到用例成功或者失败次数达到上限,命令如下:
- mvn -Dsurefire.rerunFailingTestsCount=2 test
- 可是遗憾的是,此功能只支持 Junit4,官网给出的说明如下:
- 在 Junit5 中,我们其实是可以利用 @RunWith(JUnitPlatform.class) 运行测试套件的,具体内容可参考文章:[Junit5简介、构成、新特性及基本使用-常用注解、套件执行] 。
- 然而当我们使用mvn来执行套件时,
- 套件:
- mvn 命令:
- mvn -Dtest=TestSuite test
- 会出现如下报错:
- 据说是因为 surefire 插件的版本问题,当切换到 2.19 版本的时候,套件执行成功了,可是 mvn test 命令又失败了,这显然不是我们想要的结果,于是乎开始了 Google 之路。。。
- 最终找到了一个相对合理的解释!抱歉,又要失望了,Google 到别人的解释如下(已翻译完成~):
- 简单的说就是 surefire 插件暂时还不支持在 Junit5 下执行继承至 Junit4 的 @RunWith,所以还是需要有心人出来解决这个问题才行了~~
- 例如这里我默认只想执行 MavenPackageDemoTest ,而另外两个 MavenDemo 开头的测试类我都不想执行,这个时候可以在 pom 中做如下配置,在 surefire 插件下添加 configuration:
- 执行 mvn test ,查看结果:
- 从结果中可以看到仅仅执行了我们默认指定的 MavenPackageDemoTest 中的 case,其余以 MavenDemo 开头的测试类均未被执行。
- 这里介绍了 maven-surefire-plugin 插件在测试执行中的一些常见用法,还有很多其他的用法,例如:
-
- 使用很复杂的格式匹配
-
- 控制在不同级别上的多线程和多进程执行
- 后续将慢慢研究补充,有兴趣也可直接参考官网学习。
推荐霍格沃兹 《Python 测试开发实战进阶》班,可能是业界最具深度、最贴近大厂一线实践的测试开发课程。
14 期班热招中
4 个月由浅入深,强化集训,测试大咖思寒领衔主讲,授之以渔,通过 10+ 企业级项目实战演练,带你一站式掌握 BAT 测试开发工程师必备核心技能(对标阿里巴巴P6+,挑战年薪50W+)!学员直推 BAT 名企测试经理,普遍涨薪 50%+!
提升自己的核心竞争力吧
原文链接
哈喽,喜欢这篇文章的话烦请点个赞哦!万分感谢(*^▽^*)PS:有问题可以联系我们哦v ceshiren001
获取更多技术文章分享
安装
作用:分析代码与数据,并上传,独立客户端程序 独立下载:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
mac:brew install sonar-scanner
scanner 有 2 种类型的配置文件,全局配置文件与项目配置文件。
全局配置文件
scanner 的全局配置文件用于保存一些全局性的配置,比如 sonar 的 token 与主机等配置。路径在$install_directory/conf/sonar-scanner.properties:
#----- Default SonarQube server
#sonar.host.url=http://localhost:9000
项目配置文件
在待分析的项目源代码的主目录下可以配置一个 sonar 的项目配置文件 sonar-project.properties
# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# --- optional properties ---
# defaults to project key
#sonar.projectName=My project
# defaults to 'not provided'
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
scanner参数传递机制
有的时候不方便修改配置文件,可以把一些配置通过参数传递给 scanner,基本上所有的全局或者项目配置都可以被传递到 scanner 的-D 参数中。
sonar-scanner \
-Dsonar.host.url=http://sonarqube.testing-studio.com:9000 \
-Dsonar.login=$SONARQUBE_TOKEN
scanner在构建工具中的集成
scanner 支持目前主流的项目构建工具,并提供了对应的构建工具的支持,常见的插件包括
- Gradle - SonarScanner for Gradle
-
- MSBuild - SonarScanner for MSBuild
-
- Maven - use the SonarScanner for Maven
-
- Jenkins - SonarScanner for Jenkins
-
- Azure DevOps - SonarQube Extension for Azure DevOps
-
- Ant - SonarScanner for Ant
-
- anything else (CLI) - SonarScanner
下载示例项目
git clone https://github.com/SonarSource/sonar-scanning-examples.git
cd sonar-scanning-examples
大家可以把这个示例项目下载下来,能更好的帮大家学习和掌握scanner的使用哦~
⬇️ 点击“阅读原文”,提升测试核心竞争力!
原文链接
哈喽,喜欢这篇文章的话烦请点个赞哦!万分感谢(*^▽^*)PS:有问题可以联系我们哦v ceshiren001
获取更多技术文章分享