pipeline实例-Java项目自动化测试并生成测试报告和测试覆盖率报告

原创
2022/02/06 09:33
阅读数 260

收益

  • 不用再通过命令行发布
  • 测试环境稳定,可以重复执行
  • 可视化测试报告和测试覆盖率
  • 配合git的webhook使用,代码合入前触发,执行结果可作为代码合入准入参考

准备

  • linux服务器已安装jenkins、git、openjdk8和maven3.5+已就绪
  • git服务
  • 一个维护测试用例的Java项目

jenkins和git服务可参考树莓派4B基于docker搭建devops平台进行准备。

本实践环境中使用的jenkins就是参考树莓派4B基于docker搭建devops平台进行搭建的,参考文档中使用的jenkins镜像已经内置git、openjdk8和maven3.8.4,且同时支持树莓派和普通x86服务器; demo是一个快嘉脚手架项目,该项目维护了基于testng开发的测试用例。如您也准备好了一个维护测试用例的Java项目,可以将它 push到搭建好的git服务器,如gogs;或者任何可选的代码托管平台,如github、gitee、codeup、coding等等。

pipeline设计与实现

步骤

  1. 下载源码
  2. 执行测试
  3. 发布测试覆盖率报告
  4. 发布测试报告

脚本

node {
    stage('git chekout') {
        git branch: "master", url: 'https://gitee.com/fastjrun/demo.git'
    }
    stage('UT') {
        sh 'mkdir -p demo-base/src/main/java && mvn clean verify -pl demo-jacoco-report -am -Put -Dbdgc.skip=false'
    }
    stage('parallel publish report') {
        parallel (
                'jacoco': {
                    jacoco()
                },
                'testng-result': {
                    step([$class: 'hudson.plugins.testng.Publisher', reportFilenamePattern: 'target/surefire-reports/testng-results.xml'])
                }
        )
    }
}

插件准备

jenkins需安装插件:jacoco、testng。

pipeline执行

配置任务


jenkins控制台新建item

输入任务名称demo-auto-test,选择Pipeline后,点“确定”按钮,进入配置任务页面
选择Pipeline script from SCM后,显示SCM下拉选择框如下

选择Git后,显示Repository标签和Repository URL输入框如下

Repository URL输入https://gitee.com/fastjrun/demo.git

脚本路径输入demo-jacoco-report/ut.groovy

点“保存”按钮后,这个自动化测试任务就配置好了

任务执行

以参考树莓派4B基于docker搭建devops平台首次部署的jenkins在安装jacoco和testng plugin插件后执行本任务,是可以成功执行的。

执行效果

任务执行成功后,刷新任务首页,会发现任务首页会显示TestNG Results和Coverage Trend菜单,以及最新的测试结果和Code Coverage Trend图如下

测试报告

点TestNG Results菜单,进入TestNG Results页面如下
点上页中的“build #1”链接,其中的1即第一次执行,进入该任务第一次测试报告详情页面如下

测试覆盖率

点Coverage Trend菜单,进入JaCoCo Coverage Trend页面如下
点上页中的JaCoCo Coverage Trend,进入该任务最近一次测试覆盖率详情页面如下

总结

参考树莓派4B基于docker搭建devops平台进行搭建的jenkins已经解决了很多潜在问题,如果参考其他方案搭建的jenkins在执行构建过程中可能会遇到一些其他问题,您参考网上的解决方案自行处理即可,本实践将不再赘述。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部