背景说明
为了可以在jenkins自动化运行单元测试的代码,所以使用maven+testng的技术结合,达到手动或者定时去执行单元测试的代码,以便提高人工运行的自动化的效率。单元通过该方案也可以套用在httpclient框架去执行测试web api接口的自动化测试,原理是一致的。
环境准备
- 安装开发工具:eclipse开发工具
- 安装maven:在官方下载maven在开发环境和jenkins环境都需要安装配置,下载地址:Maven – Download Apache Mavenhttps://maven.apache.org/download.cgi
- 安装jenkins服务:Jenkins
- 安装jdk1.7以上的版本:Java Downloads | Oracle
代码结构
配置pom.xml
创建测试项目时,以maven类型项目创建
<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>jenkins.testng.demo</groupId><artifactId>TestDemo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>TestDemo</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><build><plugins><!-- 加入maven-surefire-plugin插件用来使用maven执行用例,其中suiteXmlFile配置的就是testNG用例执行文件的地址 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M5</version><configuration><!-- 忽略测试错误,继续编译 --><testFailureIgnore>true</testFailureIgnore><suiteXmlFiles><suiteXmlFile>src/main/java/jenkins/testng/demo/TestngSample/testng.xml</suiteXmlFile></suiteXmlFiles><!-- 加入编码设置,否则生成的报告会中文乱码 --><argLine>-Dfile.encoding=UTF-8</argLine></configuration></plugin></plugins></build><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin --><dependency><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M5</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.maven/maven-plugin-api --><dependency><groupId>org.apache.maven</groupId><artifactId>maven-plugin-api</artifactId><version>3.6.3</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.maven/maven-artifact --><dependency><groupId>org.apache.maven</groupId><artifactId>maven-artifact</artifactId><version>3.6.3</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin --><dependency><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.maven.plugin-tools/maven-plugin-annotations --><dependency><groupId>org.apache.maven.plugin-tools</groupId><artifactId>maven-plugin-annotations</artifactId><version>3.6.0</version><scope>provided</scope></dependency><!-- https://mvnrepository.com/artifact/org.testng/testng --><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>7.1.0</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.uncommons/reportng --><dependency><groupId>org.uncommons</groupId><artifactId>reportng</artifactId><version>1.1.4</version><scope>test</scope></dependency></dependencies>
</project>
测试代码
package jenkins.testng.demo.TestngSample;
import static org.testng.Assert.assertEquals;
import org.testng.annotations.Test;public class TestDemong {@Testpublic void demo() {assertEquals(true, true);}@Testpublic void demo2() {assertEquals(true, true);}}
配置testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="test"><test name="test"><classes><class name="jenkins.testng.demo.TestngSample.TestDemong"></class></classes></test><listeners><listener class-name="org.uncommons.reportng.HTMLReporter" /><listenerclass-name="org.uncommons.reportng.JUnitXMLReporter" /></listeners>
</suite>
配置jenkins
运行查看