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才可以

安装单元测试插件

Jenkins+Maven+TestNg执行单元测试_第1张图片

<dependency>
            <groupId>org.testnggroupId>
            <artifactId>testngartifactId>
            <version>6.10version>
            <scope>compilescope>
        dependency>

下面的${xmlFileName},是后续通过Jenkins的参数化部署做准备,我们部署的时候写哪个xml文件,就执行哪个xml文件

<plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-surefire-pluginartifactId>
                <version>2.22.0version>
                <configuration>
                    <argLine>-Dfile.encoding=UTF-8argLine>
                    <suiteXmlFiles>
                        
                        <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


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


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>

Jenkins+Maven+TestNg执行单元测试_第2张图片

提交代码到github

为什么这个单独要写,是因为遇到了下面这个问题

Support for password authentication was removed on August 13, 2021

解决办法传送门: 传送门

jenkins添加git+maven+java

系统管理->全局工具配置
Jenkins+Maven+TestNg执行单元测试_第3张图片
分别配置git、maven、jdk

jdk

Jenkins+Maven+TestNg执行单元测试_第4张图片
java_home获取方法

[root@hecs-82454 local]# cat /etc/profile

Jenkins+Maven+TestNg执行单元测试_第5张图片

gitJenkins+Maven+TestNg执行单元测试_第6张图片

路径获取方法:

[root@hecs-82454 local]# whereis git
git: /usr/bin/git /usr/share/man/man1/git.1.gz

maven

Jenkins+Maven+TestNg执行单元测试_第7张图片
同jdk获取方式
Jenkins+Maven+TestNg执行单元测试_第8张图片

M2_HOME和MAVEN_HOME

有的教程里说的是获取MAVEN_HOME,其实MAVEN_HOME是低版本的maven的配置,M2_HOME是高版本的maven的配置,现在大部分都是高版本的maven

jenkins配置github的用户

安装GitHub plugin插件

首先,下载插件GitHub plugin,为什么要下载GitHub plugin,是因为这个插件会把github依赖的插件都下载下来。
Jenkins+Maven+TestNg执行单元测试_第9张图片
由于我这个已经下载过了,所以就展示不出来了
Jenkins+Maven+TestNg执行单元测试_第10张图片
下载安装重启Jenkins,检查时候安装成功
Jenkins+Maven+TestNg执行单元测试_第11张图片
不知道为什么,精确搜索都不展示在第一位,而是展示在后面
Jenkins+Maven+TestNg执行单元测试_第12张图片

获取github的token

Jenkins+Maven+TestNg执行单元测试_第13张图片
Jenkins+Maven+TestNg执行单元测试_第14张图片
Jenkins+Maven+TestNg执行单元测试_第15张图片
Jenkins+Maven+TestNg执行单元测试_第16张图片
最后提交
Jenkins+Maven+TestNg执行单元测试_第17张图片
Jenkins+Maven+TestNg执行单元测试_第18张图片

配置github账户

Jenkins+Maven+TestNg执行单元测试_第19张图片
Jenkins+Maven+TestNg执行单元测试_第20张图片
API URL:https://api.github.com/
Jenkins+Maven+TestNg执行单元测试_第21张图片
连接测试,试试凭证是否可用
Jenkins+Maven+TestNg执行单元测试_第22张图片

安装maven插件: Maven Integration plugin

安装方法同GitHub plugin,有的教程也说安装Maven Integration,但是我安装的Maven Integration plugin,也没问题,不影响使用,如果不安装这个插件的话,就没办法构建maven项目
Jenkins+Maven+TestNg执行单元测试_第23张图片

新建maven项目

新建项目

Jenkins+Maven+TestNg执行单元测试_第24张图片

配置github的url

Jenkins+Maven+TestNg执行单元测试_第25张图片
这个url可以通过将github对应项目的clone地址获取

例如

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

然后将.git删除掉
Jenkins+Maven+TestNg执行单元测试_第26张图片

丢弃旧的构建

其实这个可以不配置,但是为了节省主机的空间,最好配置一下,我就看了一下公司的项目,也是有这个配置的
Jenkins+Maven+TestNg执行单元测试_第27张图片

参数化构建

这里是为了这样一个场景,比如我们有好几个testng.xml,那我们就可以通过这个参数来控制maven执行的是哪个xml文件。更灵活一些。

Jenkins+Maven+TestNg执行单元测试_第28张图片

Jenkins+Maven+TestNg执行单元测试_第29张图片

配置git项目

Credentials就是在配置github的时候新建的凭证。
Jenkins+Maven+TestNg执行单元测试_第30张图片
源码库浏览器的作用是会在配置完成后会在项目上有这样一个东西
Jenkins+Maven+TestNg执行单元测试_第31张图片
点击后进入项目的github
Jenkins+Maven+TestNg执行单元测试_第32张图片

构建触发器

这个的作用就是控制什么时候jenkins会执行,但是我们暂时手动就可以,而且公司的项目也是手动的,我这里就也取消了。
Jenkins+Maven+TestNg执行单元测试_第33张图片

Build

由于我们只是执行单元测试,并不需要打包上传之类的操作,所以只需要clean test即可。
Jenkins+Maven+TestNg执行单元测试_第34张图片

保存,配置工作大功告成

Jenkins+Maven+TestNg执行单元测试_第35张图片

测试一下功能是否正确

首先声明,从咱们中国连接github太难了,以至于我构建10次有的时候才成功一次,就是因为连接超时

第一次测试执行: testng.xml
Jenkins+Maven+TestNg执行单元测试_第36张图片
测试通过,与testng.xml配置的TestFour测试类结果一致
Jenkins+Maven+TestNg执行单元测试_第37张图片
再来测试一下testng2.xml的TestTwo测试类结果保持一致。
Jenkins+Maven+TestNg执行单元测试_第38张图片
结果和testng2.xml配置的
Jenkins+Maven+TestNg执行单元测试_第39张图片

你可能感兴趣的:(单元测试,持续集成,jenkins,maven,单元测试)