jenkins+maven+junit构建自动化测试,整合junit xml生成直观的测试报告[留存]
在自动化测试过程中,测试报告最能直观的体现测试的价值,之前一直使用maven+junit来构建我的自动化测试,但这样有几个缺点,一是,不能定时构建自动化任务(也许是我没有找到maven有没有提供这样的方法),二是,不能生成一个直观的测试报告(maven+junit在surefire-reports文件目录下提供两种格式的测试结果集,一种是txt文本格式,第二种是junit的xml格式的,但给我总体感觉还是不够直观),三是,无法完成分布式执行测试,设想一下,如果我们有成千上百个testcase,我们将面临一个非常严峻的问题,效率!!!
综合以上三点考虑,我选择了jenkins来解决现在面临的困难,不管以上三种问题在maven+junit中有没有更好的支持,但我可以确认jenkins可以非常简单的完成以上3个目标,先介绍下如何生成直观的测试报告。
1、下载jenkins.war,地址:http://jenkins-ci.org
2、安装JDK,TOMCAT
3 、讲下载的jenkins.war直接抛到tomcat的webapps目录下,然后启动tomcat
4、在浏览器中输入:http://localhost:8080/jenkins,进入jenkins管理界面
5、在使用jenkins前,需要做些配置,jenkins默认工作目录位于~/.jenkins下,配置下环境变量即可,如:JENKINS_HOME=E:\jenkins,
另外,tomcat默认不支持UTF-8的URI,解决办法是修改server.xml的connector,如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />
重启tomcat
进入jenkins 的homepage,进入系统设置页面,这里是jenkins构建任务用的全局范围设置的地方,下面我会一一介绍各个字段的使用,没有介绍到的,不做任何修改,这里主要针对自动化测试使用
主目录:即是以上配置环境变量JENKINS_HOME的值,修改环境变量后,会在此显示
系统消息:根据自己需要随便写两句即可,登陆后会显示在主界面,这里支持html风格
执行者数量:jenkins可以同时构建的job个数,最好小于cpu个数,这里默认即可
生成钱等待时间:只上次构建结束后,本次构建的等待时间,默认即可
全局属性,Environment variables环境变量,在这里可以添加名值对,提供给后续创建job使用,使用方法很简单,${变量名}
maven 配置:两项,前者是提供maven repository的settings.xml地址,后者是maven全局settings.xml文件地址
jdk配置,看图就明白了
maven配置,如图
maven项目配置:
1、全局maven_opts,这里可以配置maven的相关参数,如图,我只配置了下maven启动时jvm堆的大小
2、local maven repository:maven本地仓库地址,默认即可,这里我有些疑问,我的电脑中已经将maven本地仓库迁移到其他目录,但这样做jenkins在构建maven job时会自动找到我迁移后的仓库,有知道的朋友麻烦给评论下,顺便留下详细的答案啊!!!!
jenkins url:将localhost改为真实ip
剩下部分算是无关紧要的了,全部默认即可,如有特殊需要再进行配置,如源码使用svn管理等等
到此,jenkins系统环境就配置完毕!接下来就是为jenkins创建一个job,创建job也很简单,不要害怕里面有很多配置,大部分对于自动化测试默认就足够了,这也证明了jenkins足够强大!
1、返回jenkins首页,单击 new job 链接,进入如下页面
jenkins支持多种构建平台,其中常用的就是前两个,我们这里选择针对maven项目构建,选择第二项,很多情况第一种更为方便,扩展性较强,在这里我说如果构建一个maven2/3项目,首先,给maven起一个有意义的名称,选择第二项(构建一个maven2/3项目),单击ok,进入构建主页,如图
maven
以下 我会对紧要的相关字段介绍一下,其他的默认即可
选择【丢弃旧的构建】,这里主要是为节省磁盘空间而考虑的,因为每次构建后,jenkins都会在jobs目录下为每个job下载,和创建相关数据,如打包后的jar等
1、保持构建的天数,这里我设置5,表示每个每次构建后的记录只有5天有效期
2、保持构建的最大个数,每个job只会保留最新的5次构建记录,这里需要提醒的是,如果之前有一次构建成功,那么jenkins会永远保留,当然也可以手动删除
如图:
1、高级项目选项:顾名思义,这里只有在有特殊需求的情况下才会使用,对于本次测试,默认即可
这里说下前两个字段,安静期主要是对于cvs这样的项目管理工具,它不支持原子性提交,所以为了避免每次cvs版本发生变化就触发构建,这里设置一个时间,指定cvs版本发生变化后,等待指定时间后再触发构建;重试次数是以防cvs等遇到其他异常
2、源码管理:这里可以辅助我们做分布式自动化,我们可以把每个slave要执行的脚本放到svn上,每个slave在构建时依据这里的配置自动check out 对应的脚本,如果源码放在svn上,在此做配置,
repository url:即为源码的url,我使用的是svn协议,我的脚本放在了yanxiuLAN这个项目下
local module directory:这里是相对路径,相对于jenkins的 workspace\jobname,项目的源码会下载到这个目录下.
构建触发器(定时任务),这里既解决开篇我提到的如何定时执行测试任务,如图:
这里着重介绍下build periodically,其他选项对于开发流程较为常用
选中build periodically,如图: ,我配置的是每周一 至 周五 早上8点构建任务
对于所有的任务日程表,jenkins采用cron-style语法,包含5个字段,字段之间使用空格隔开,格式如下
MINUTE HOUR DOM MANTH DOW
MINUTE:0-59 HOUR:0-23 DOM:1-31 MONTH:1-12 DOW:0-7 ,其中0,7都是表示周日 ,以下有几个简化字符
1、“*” 表示在该字段所有可能出现的值
2、也可以使用连字符“-”定义范围,如在DOW字段上定义1-5,表示周一至周五
3、使用正斜杠符号定义一个跳过一个范围,如在MINUTE字段上定义 */5 表示每五分钟的意思
4、使用逗号分隔一个字段表示一系列有效值,如HOUR 字段定义 12,18 表示12点与18点
接下来介绍一下对于测试比较重要的一个配置,如图:
1、Root POM 是你指定构建maven任务的项目根目录,指定pom.xml所在目录,这里可以是相对目录或绝对路径,相对路径即为jenkinsHome\workspace\jobName
2、Goals and options:是你要执行的maven命令,我这里的意思是构建前先清除上次构建产生的target目录(该目录中包含编译后的class文件,生成的项目站点以及打好的包,junit的报告等),然后执行site会重新构建项目生成站点,详见maven
保存。
OK!!!有了以上的配置后,就能成功解决开篇提到的3个问题,so easy,大家多试一下,相信大家会喜欢jenkins的
jenkins+maven+junit构建自动化测试,整合junit xml生成直观的测试报告[留存]的更多相关文章
- 初次尝试使用jenkins+python+appium构建自动化测试
初次尝试使用jenkins+python+appium构建自动化测试 因为刚刚尝试使用jenkins+python+appium尝试,只是一个Demo需要很多完善,先记录一下今天的成果,再接再厉 第一 ...
- jenkins+maven+svn构建项目,及远程部署war包到tomcat上
要使用jenkins构建项目,当然要使用jenkins了,我使用的war版本的jenkins jenkins的官网 http://jenkins-ci.org/ 点击latest下载,但是可能因为天朝 ...
- Jenkins+maven+SVN构建java项目中遇到的问题及解决
[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a g ...
- Jenkins持续集成构建自动化测试项目
1.配置内容安全策略(配置一次): 1.1.构建一个自由风格的软件项目 1.2.Build Triggers:Build when job nodes start 1.3.Build:Execute ...
- Spring的AOP开发入门,Spring整合Junit单元测试(基于ASpectJ的XML方式)
参考自 https://www.cnblogs.com/ltfxy/p/9882430.html 创建web项目,引入jar包 除了基本的6个Spring开发的jar包外,还要引入aop开发相关的四个 ...
- maven插件之maven-surefire-plugin,junit单元测试报告和sonar测试覆盖率的整合说明
POM中配置的如下: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId> ...
- 十二 Spring的AOP开发入门,整合Junit单元测试(AspectJ的XML方式)
创建web项目,引入jar包 引入Spring配置文件
- spring整合junit报错
1.Could not autowire field: private javax.servlet.http.HttpServletRequest 参考:https://www.cnblogs.com ...
- Spring Test 整合 JUnit 4 使用总结
转自:https://blog.csdn.net/hgffhh/article/details/83712924 这两天做Web开发,发现通过spring进行对象管理之后,做测试变得复杂了.因为所有的 ...
随机推荐
- protobuf中的编码规则
protobuf中的编码规则 (1)序列化和反序列化: 在开始本部分的内容之前,首先有必要介绍两个基本概念,一个是序列化,一个是反序列化.这两个概念的定义在网上搜一下都很多的,但大多都讲得比较晦涩,不 ...
- CSS-设置Footer始终在页面底部
Footer顾名思义页脚,如果内容多的时候在底部时感官很好,但是当内容变少(无法撑开一屏的时候)footer不固定在底部,影响美观,对于已经从事前端工作的工作的来说应该是比价工作中入门级别的问题了,由 ...
- javascript 的面向对象特性参考
最近在看用javascript+css实现rich client.javascript 也是一个蛮有意思的语言.特别是其面向对象的实现和其他“标准”的OO launguage有很大的不同.但是,都是动 ...
- nodejs 项目的session验证
原文:https://www.codexpedia.com/node-js/a-very-basic-session-auth-in-node-js-with-express-js/ -------- ...
- PhpExcel 删除默认的Sheet
最近使用ThinkPHP的第三方插件PheExcel导出多语言文件,但导出的文档中最后一个Sheet并不是我Code生成的 因为导出后的文件编辑后会再导入到系统中,因此对于该sheet必须删除掉[经测 ...
- Chrome DevTools — Network
Chrome DevTools — Network https://segmentfault.com/a/1190000008407729 chrome DevTools的各种使用: 在dev too ...
- Android 7.1.1 之实现 3D Touch
转载请注明出处:http://blog.csdn.net/yyh352091626/article/details/68962736 Shortcut概念 详细实现 BuildConfig 配置 静态 ...
- registry-1.docker.io TimeOut 错误
用Docker For Windows在Windows 10上执行docker login或者 docker pull/push的时候,经常会报这样的错误: https: Get https://re ...
- JavaScript 将行结构数据转化为树形结构,可提供给常用的tree插件直接使用(高效转化方案)
前台接收到的数据格式 var rows=[{ parent: 'root', id: 'DC', title: '集团' }, { parent: 'DC', id: '01', title: '上海 ...
- GPUImage API 文档之GPUImagePicture类
GPUImagePicture类静态图像处理操作,它可以是需要处理的静态图像,也可以是一张作为纹理使用的图片,调用向它发送processImage消息,进行图像滤镜处理. 方法 - (id)initW ...