Jenkins+Maven+TestNg执行单元测试
环境信息: github
Jenkins:华为云搭建,个人建议,jenkins的版本高一点,因为很多插件在低版本的Jenkins上都没办法安装,我原来的版本是jenkins-2.222.1-1.1.noarch.rpm,后来重装成了jenkins-2.263.2-1.1.noarch.rpm才可以
安装单元测试插件
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.10</version>
<scope>compile</scope>
</dependency>
下面的${xmlFileName},是后续通过Jenkins的参数化部署做准备,我们部署的时候写哪个xml文件,就执行哪个xml文件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<argLine>-Dfile.encoding=UTF-8</argLine>
<suiteXmlFiles>
<!--suppress UnresolvedMavenProperty -->
<suiteXmlFile>${xmlFileName}</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
编写测试用例
准备两个测试用例,分别写在两个不同的testng.xml文件里
package com.newcrud.testngTest;
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestFour {
@Test
public void testA() {
System.out.println("testA");
Assert.assertEquals(1,1);
}
@Test
public void testB(){
System.out.println("testB");
Assert.assertEquals(1,1);
}
}
package com.newcrud.testngTest;
import org.testng.annotations.*;
public class TestTwo {
@Test
public void testOne(){
System.out.println("TestTwo的testOne");
}
}
编写testng.xml
testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
<test verbose="2" preserve-order="true" name="/Users/zc/IdeaProjects/NewCRUD/src/test/java/com/newcrud" time-out="3000">
<classes>
<class name="com.newcrud.testngTest.TestFour"></class>
</classes>
</test>
</suite>
testng2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
<test verbose="2" preserve-order="true" name="/Users/zc/IdeaProjects/NewCRUD/src/test/java/com/newcrud" time-out="3000">
<classes>
<class name="com.newcrud.testngTest.TestTwo"></class>
</classes>
</test>
</suite>
提交代码到github
为什么这个单独要写,是因为遇到了下面这个问题
Support for password authentication was removed on August 13, 2021
解决办法传送门: 传送门
jenkins添加git+maven+java
系统管理->全局工具配置 分别配置git、maven、jdk
jdk
java_home获取方法
[root@hecs-82454 local]# cat /etc/profile
git
路径获取方法:
[root@hecs-82454 local]# whereis git
git: /usr/bin/git /usr/share/man/man1/git.1.gz
maven
同jdk获取方式
M2_HOME和MAVEN_HOME
有的教程里说的是获取MAVEN_HOME,其实MAVEN_HOME是低版本的maven的配置,M2_HOME是高版本的maven的配置,现在大部分都是高版本的maven
jenkins配置github的用户
安装GitHub plugin插件
首先,下载插件GitHub plugin,为什么要下载GitHub plugin,是因为这个插件会把github依赖的插件都下载下来。 由于我这个已经下载过了,所以就展示不出来了
下载安装重启Jenkins,检查时候安装成功
不知道为什么,精确搜索都不展示在第一位,而是展示在后面
获取github的token
最后提交
配置github账户
API URL:api.github.com/
连接测试,试试凭证是否可用
安装maven插件: Maven Integration plugin
安装方法同GitHub plugin,有的教程也说安装Maven Integration,但是我安装的Maven Integration plugin,也没问题,不影响使用,如果不安装这个插件的话,就没办法构建maven项目
新建maven项目
新建项目
配置github的url
这个url可以通过将github对应项目的clone地址获取
例如
然后将.git删除掉
丢弃旧的构建
其实这个可以不配置,但是为了节省主机的空间,最好配置一下,我就看了一下公司的项目,也是有这个配置的
参数化构建
这里是为了这样一个场景,比如我们有好几个testng.xml,那我们就可以通过这个参数来控制maven执行的是哪个xml文件。更灵活一些。
配置git项目
Credentials就是在配置github的时候新建的凭证。 源码库浏览器的作用是会在配置完成后会在项目上有这样一个东西
点击后进入项目的github
构建触发器
这个的作用就是控制什么时候jenkins会执行,但是我们暂时手动就可以,而且公司的项目也是手动的,我这里就也取消了。
Build
由于我们只是执行单元测试,并不需要打包上传之类的操作,所以只需要clean test即可。
保存,配置工作大功告成
测试一下功能是否正确
首先声明,从咱们中国连接github太难了,以至于我构建10次有的时候才成功一次,就是因为连接超时
第一次测试执行: testng.xml 测试通过,与testng.xml配置的TestFour测试类结果一致
再来测试一下testng2.xml的TestTwo测试类结果保持一致。
结果和testng2.xml配置的
\