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

安装maven插件: Maven Integration plugin

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

新建maven项目

新建项目

在这里插入图片描述

配置github的url

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

例如

github.com/zhangyinrai…

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

\

猜你喜欢

转载自juejin.im/post/7111637363960315912