构建一个基于Jenkins集成Git管理的maven-UI自动化测试项目
构建一个基于Jenkins集成Git管理的maven-UI自动化测试项目
1.确定设计要点
基于Maven管理和testNG测试框架的UI自动化项目工程
Jenkins环境构建
Jenkins中maven项目集成管理
Allure报告添加
Email邮件添加
2.具体实施
1.基于Maven的项目工程(解决报告的集成和jenkins后续的依赖问题)
1.集成报告插件
此处采用allure报告,也可以采用reportNG,extendReport
pom.xml文件集成
<dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-testng</artifactId> <version>2.12.1</version> <scope>test</scope> </dependency>
2.为避免jenkins控制台输出乱码
pom.xml文件插入,此处定义了aspect属性便于其他出调用使用,此项目必须,后面project的属性一个为构建源码编码,一个为报告输出编码,maven的编码为maven项目编译的编码
<properties> <aspectj.version>1.8.10</aspectj.version> <project.build.sourceEncoding>UTF8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF8</project.reporting.outputEncoding> <maven.compiler.encoding>UTF8</maven.compiler.encoding> </properties>
3.Sufire插件集成
pom.xml文件插入,此处需要使用2中声明的<version>${aspectj.version}</version>属性
<!-- 为了后期集成jenkins等自动化平台,须保证自己的脚本可以通过命令脚本来调动执行。 实现方式:集成maven的surefire插件,Surefire插件用于Maven项目的test阶段,以执行单元测试。集成后我们就可以通过maven命令 maven test 来调动脚本执行了。 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> <configuration> <argLine> -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" </argLine> <suiteXmlFiles> <!--此处在jenkins 调用mvn test执行时,选取执行的文件,可以为多个suiteXmlFiles,根路径为当前项目名,默认从根路径开始时取文件--> <!--例如:此处的testng.xml路径是在项目根目录下,mvn test执行时,会在根目录开始查找--> <suiteXmlFile>testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> <dependencies> <dependency> <!--allure 的依赖框架--> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> </dependencies> </plugin>
4.maven项目的JDK版本指定的插件
<!-- 指定jdk版本,防止jdk构建版本变动 解决每次右键项目名-maven->update project 时候,项目jdk版本变了,变回1.5版本或者其他版本 解决使用maven编译其他问题:如提示不能在内部类访问外部非final局部变量 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin>
5.此时可以在本地运行项目,项目根目录下会生成allure-result报告目录
1.集成surefire插件后
项目运行:项目右键mvn test;也可以在cmd控制台中运行,前提本地配置了maven
2.报告测试:
安装allure-commandline工具。官网有各种安装方法,包括本地和在线安装两种
测试:Allure server allure-results // 会启动一个本地服务打开网页进行测试,allure-results为你的报告文件放置的目录
6.到此,项目配置完毕。
2.搭建jenkins服务或者服务器
//此处不予说明
3.jenkins相关配置
基于本项目需要的相关配置
1. java环境
jdk环境的配置:
系统管理->全局工具设置(Global Tool Configuration)
建议使用1.8以上,匹配jenkins也匹配自己的使用环境
不勾选自动安装
2. maven环境
系统管理->全局工具设置(Global Tool Configuration)
如果机器上有下载和安装maven指定maven_home即可
使用本地的则不勾选自动安装,建议使用本地安装
3. allure环境
插件安装:allure安装下载
配置全局工具:配置本地的allure-commandline
4. E-mial环境
1.需要配置的属性
插件安装:Email Extension Plus
配置-系统设置:配置邮件设置
Extended Email Notification
Smtp server
E-mail suffix(后缀)
User smtp authentication
Username,password
Use ssl:使用https
Smtp port
Charset
Default content type
2.邮件通知:
Smtp.qq.com
@qq.com
高级:
smtp认证
用户,密码
使用ssl
smtp端口:465
字符集:utf-8
可以发测试邮件测试(注:Jenkins Location 系统管理员邮件配置需要和发送的人员邮件一致)
5. git环境
git管理源代码
jenkins只需要获取 src的java代码和pom.xml配置以及testng,xml配置,所以上传这三部分即可
6.jenkins配置完毕
4.构建maven项目
前提:安装 maven integration插件,安装后可以构建maven项目
1.创建一个maven项目

2.项目描述
3.增加git管理

4.构建触发器

5.构建操作


6.增加构建后的allure报告和email-notification


增加一个always的trigger即触发email

4.至此构建结束,运行后注意跟踪jenkins console的日志,根据自己的实际问题调试。
附件:此处给出pom.xml的样板
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.eteams.www</groupId> <artifactId>EasyUi</artifactId> <version>1.0-SNAPSHOT</version> <properties> <aspectj.version>1.8.10</aspectj.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.59</version> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.8.8</version> <!-- <scope>test</scope>--> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--parser XML's files--> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> <!-- allure测试报表 --> <dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-testng</artifactId> <version>2.12.1</version> <scope>test</scope> </dependency> <dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-java-commons</artifactId> <version>2.12.1</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <!-- 指定jdk版本,防止jdk构建版本变动 解决每次右键项目名-maven->update project 时候,项目jdk版本变了,变回1.5版本或者其他版本 解决使用maven编译其他问题:如提示不能在内部类访问外部非final局部变量 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- 为了后期集成jenkins等自动化平台,我们必须保证自己的脚本可以通过命令脚本来调动执行。 实现方式:集成maven的surefire插件, Surefire插件用于Maven项目的test阶段,以执行单元测试。集成后我们就可以通过maven命令 maven test 来调动脚本执行了。 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> <configuration> <argLine> -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" </argLine> <properties> <property> <name>listener</name> <value>cn.eteams.www.listener.WebAutoListener</value> </property> </properties> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>

浙公网安备 33010602011771号