Jenkins+Maven+TestNg执行单元测试

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:https://api.github.com/
在这里插入图片描述
连接测试,试试凭证是否可用
在这里插入图片描述

安装maven插件: Maven Integration plugin

安装方法同GitHub plugin,有的教程也说安装Maven Integration,但是我安装的Maven Integration plugin,也没问题,不影响使用,如果不安装这个插件的话,就没办法构建maven项目
在这里插入图片描述

新建maven项目

新建项目

在这里插入图片描述

配置github的url

在这里插入图片描述
这个url可以通过将github对应项目的clone地址获取

例如

https://github.com/zhangyinrainbow/NewCRUD.git

然后将.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配置的
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值