JAVA接口自动化测试----Jenkins持续集成(二)

上一节介绍环境的准备和jenkins所需要的插件,这篇主要介绍项目与Jenkins的结合应用

如下:

一、maven项目的pom设置

pom文件部分如下

<?xml version="1.0" encoding="UTF-8"?>

<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>chuanglan</groupId>

  <artifactId>Testgroup</artifactId>

  <version>1.0-SNAPSHOT</version>

  <packaging>jar</packaging>

  <name>Testgroup Maven Webapp</name>

  <!-- FIXME change it to the project's website -->

  <url>http://www.example.com</url>

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <maven.compiler.source>1.7</maven.compiler.source>

    <maven.compiler.target>1.7</maven.compiler.target>

    <aspectj.version>1.8.10</aspectj.version>

    <!-- spring版本号 -->

    <spring.version>4.0.2.RELEASE</spring.version>

    <!-- log4j日志文件管理包版本 -->

    <slf4j.version>1.7.7</slf4j.version>

    <!--外部传参-->

    <xmlFileName></xmlFileName>

  </properties>

  <dependencies>

    <!--需要jekins参数化配置的东西-->

    <dependency>

      <groupId>io.rest-assured</groupId>

      <artifactId>rest-assured</artifactId>

      <version>3.1.0</version>

    </dependency>

    <dependency>

      <groupId>ru.yandex.qatools.allure</groupId>

      <artifactId>allure-testng-adaptor</artifactId>

      <version>1.3.6</version>

      <exclusions>

        <exclusion>

          <groupId>org.testng</groupId>

          <artifactId>testng</artifactId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>com.google.code.gson</groupId>

      <artifactId>gson</artifactId>

      <version>2.8.2</version>

    </dependency>

    <!--allure报告-->

    <dependency>

      <groupId>io.qameta.allure</groupId>

      <artifactId>allure-testng</artifactId>

      <version>2.7.0</version>

    </dependency>

    <!--日志校验查看-->

    <dependency>

      <groupId>ch.ethz.ganymed</groupId>

      <artifactId>ganymed-ssh2</artifactId>

      <version>build210</version>

    </dependency>

    <dependency>

      <groupId>com.jcraft</groupId>

      <artifactId>jsch</artifactId>

      <version>0.1.55</version>

    </dependency>

    <!--      extentreports测试报告-->

    <dependency>

      <groupId>com.relevantcodes</groupId>

      <artifactId>extentreports</artifactId>

      <version>2.41.1</version>

      <!--<version>3.0.7</version>-->

    </dependency>

    <dependency>

      <groupId>com.vimalselvam</groupId>

      <artifactId>testng-extentsreport</artifactId>

      <version>1.2.0</version>

    </dependency>

    <dependency>

      <groupId>com.aventstack</groupId>

      <artifactId>extentreports</artifactId>

      <version>3.0.6</version>

    </dependency>

    <!--io.netty-->

    <dependency>

      <groupId>io.netty</groupId>

      <artifactId>netty-all</artifactId>

      <version>4.1.32.Final</version>

    </dependency>

    <!--cucumber测试-->

    <dependency>

      <groupId>info.cukes</groupId>

      <artifactId>cucumber-java</artifactId>

      <version>1.2.4</version>

    </dependency>

    <dependency>

      <groupId>info.cukes</groupId>

      <artifactId>cucumber-testng</artifactId>

      <version>1.2.4</version>

    </dependency>

    <!--节省get、set-->

    <dependency>

      <groupId>org.projectlombok</groupId>

      <artifactId>lombok-maven-plugin</artifactId>

      <version>1.16.18.1</version>

    </dependency>

    <dependency>

      <groupId>commons-httpclient</groupId>

      <artifactId>commons-httpclient</artifactId>

      <version>3.1</version>

    </dependency>

    <!--http-->

    <dependency>

      <groupId>org.jsoup</groupId>

      <artifactId>jsoup</artifactId>

      <version>1.10.2</version>

    </dependency>

    <!--oracle的链接-->

    <dependency>

      <groupId>com.oracle</groupId>

      <artifactId>ojdbc6</artifactId>

      <version>11.2.0.3</version>

      <!--<scope>test</scope>-->

    </dependency>

    <!--解析JsonPath的具体位置-->

    <dependency>

      <groupId>com.jayway.jsonpath</groupId>

      <artifactId>json-path</artifactId>

      <version>2.2.0</version>

    </dependency>

    <dependency>

      <groupId>org.assertj</groupId>

      <artifactId>assertj-core</artifactId>

      <version>3.8.0</version>

    </dependency>

    <!--解析xml用到的-->

    <dependency>

      <groupId>dom4j</groupId>

      <artifactId>dom4j</artifactId>

      <version>1.6.1</version>

    </dependency>

    <dependency>

      <groupId>javax</groupId>

      <artifactId>javaee-api</artifactId>

      <version>7.0</version>

    </dependency>

    <dependency>

      <groupId>org.slf4j</groupId>

      <artifactId>slf4j-api</artifactId>

      <version>${slf4j.version}</version>

    </dependency>

    <dependency>

      <groupId>org.slf4j</groupId>

      <artifactId>slf4j-log4j12</artifactId>

      <version>${slf4j.version}</version>

    </dependency>

    <!--jenkins-->

    <dependency>

      <groupId>org.kohsuke.stapler</groupId>

      <artifactId>json-lib</artifactId>

      <version>2.4-jenkins-2</version>

    </dependency>

    <!--dubblo-->

    <dependency>

      <groupId>com.alibaba</groupId>

      <artifactId>dubbo</artifactId>

      <version>2.5.3</version>

      <exclusions>

        <exclusion>

          <artifactId>spring</artifactId>

          <groupId>org.springframework</groupId>

        </exclusion>

      </exclusions>

    </dependency>

    <!--log4-->

    <dependency>

      <groupId>log4j</groupId>

      <artifactId>log4j</artifactId>

      <version>1.2.17</version>

    </dependency>

    <!--mockito-->

    <dependency>

      <groupId>org.mockito</groupId>

      <artifactId>mockito-all</artifactId>

      <version>2.0.2-beta</version>

    </dependency>

    <!--加载Json包-->

    <dependency>

      <groupId>com.alibaba</groupId>

      <artifactId>fastjson</artifactId>

      <version>1.2.47</version>

    </dependency>

    <!--commons-io-->

    <dependency>

      <groupId>commons-io</groupId>

      <artifactId>commons-io</artifactId>

      <version>2.6</version>

    </dependency>

    <!--加载Junit包-->

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>4.12</version>

    </dependency>

    <!--testng-->

    <dependency>

      <groupId>org.testng</groupId>

      <artifactId>testng</artifactId>

      <version>6.14.3</version>

      <!--<version>6.9.10</version>-->

    </dependency>

    <!-- 依赖Guice -->

    <dependency>

      <groupId>com.google.inject</groupId>

      <artifactId>guice</artifactId>

      <version>4.1.0</version>

      <!--<version>4.0</version>-->

      <scope>test</scope>

    </dependency>

    <!-- 依赖reportNg 关联testNg -->

    <dependency>

      <groupId>org.uncommons</groupId>

      <artifactId>reportng</artifactId>

      <version>1.1.4</version>

      <scope>test</scope>

      <exclusions>

        <exclusion>

          <groupId>org.testng</groupId>

          <artifactId>testng</artifactId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>velocity</groupId>

      <artifactId>velocity-dep</artifactId>

      <version>1.4</version>

    </dependency>

    <!--guava-->

    <dependency>

      <groupId>com.google.guava</groupId>

      <artifactId>guava</artifactId>

      <version>18.0</version>

    </dependency>

    <!--commons-lang3-->

    <dependency>

      <groupId>org.apache.commons</groupId>

      <artifactId>commons-lang3</artifactId>

      <version>3.7</version>

    </dependency>

    <!--httpclient-->

    <dependency>

      <groupId>org.apache.httpcomponents</groupId>

      <artifactId>httpclient</artifactId>

      <version>4.5.5</version>

    </dependency>

    <!--jxl  Excle-->

    <dependency>

      <groupId>net.sourceforge.jexcelapi</groupId>

      <artifactId>jxl</artifactId>

      <version>2.6.12</version>

    </dependency>

    <!-- 引入poi,解析workbook视图 -->

    <dependency>

      <groupId>org.apache.poi</groupId>

      <artifactId>poi</artifactId>

      <version>3.16</version>

    </dependency>

    <dependency>

      <groupId>org.apache.poi</groupId>

      <artifactId>poi-scratchpad</artifactId>

      <version>3.16</version>

    </dependency>

    <dependency>

      <groupId>org.apache.poi</groupId>

      <artifactId>poi-ooxml</artifactId>

      <version>3.16</version>

    </dependency>

    <dependency>

      <groupId>org.apache.poi</groupId>

      <artifactId>poi-ooxml-schemas</artifactId>

      <version>3.16</version>

    </dependency>

    <dependency>

      <groupId>org.apache.poi</groupId>

      <artifactId>poi-examples</artifactId>

      <version>3.16</version>

    </dependency>

    <dependency>

      <groupId>org.apache.poi</groupId>

      <artifactId>poi-excelant</artifactId>

      <version>3.16</version>

    </dependency>

    <dependency>

      <groupId>mysql</groupId>

      <artifactId>mysql-connector-java</artifactId>

      <version>5.1.42</version>

    </dependency>

    <dependency>

      <groupId>org.apache.commons</groupId>

      <artifactId>commons-dbcp2</artifactId>

      <version>2.1.1</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-core</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-web</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-oxm</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-tx</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-jdbc</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-webmvc</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-aop</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-context-support</artifactId>

      <version>${spring.version}</version>

    </dependency>

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-test</artifactId>

      <version>${spring.version}</version>

    </dependency>

  </dependencies>

  <build>

    <finalName>HappyDragon</finalName>

    <defaultGoal>compile</defaultGoal>

    <filters>

      <filter>src/main/filters/filter_${env}.properties</filter>

      <!--<filter>${project.basedir}/target/classes/${env}.properties</filter>-->

    </filters>

    <resources>

      <resource>

        <!--寻找配置文件地址-->

        <directory>src/main/resources</directory>

        <includes>

          <include>**/*.*</include>

        </includes>

        <filtering>true</filtering>

      </resource>

    </resources>

    <plugins>

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-compiler-plugin</artifactId>

        <configuration>

          <source>1.8</source>

          <target>1.8</target>

        </configuration>

        <version>3.1</version>

      </plugin>

      <!-- 添加插件,添加插件, 关联testNg.xml,添加ReportNg的监听器,修改最后的TestNg的报告 -->

      <!--<plugin>-->

        <!--<groupId>org.apache.maven.plugins</groupId>-->

        <!--<artifactId>maven-surefire-plugin</artifactId>-->

        <!--<version>2.18.1</version>-->

        <!--<configuration>-->

          <!--<argLine>-->

              <!-- -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"-->

          <!--</argLine>-->

          <!--<suiteXmlFiles>-->

            <!--&lt;!&ndash;该文件位于工程根目录时,直接填写名字,其它位置要加上路径&ndash;&gt;-->

            <!--&lt;!&ndash;suiteXmlFile>src/main/resources/testngXml/${xmlFileName}</suiteXmlFile&ndash;&gt;-->

            <!--<suiteXmlFile>${project.basedir}/target/classes/testngXml/${xmlFileName}</suiteXmlFile>-->

            <!--&lt;!&ndash;<suiteXmlFile>src/test/java/MessageSend.xml</suiteXmlFile>&ndash;&gt;-->

          <!--</suiteXmlFiles>-->

          <!--<properties>-->

            <!--<property>-->

              <!--<name>usedefaultlisteners</name>-->

              <!--<value>false</value>-->

            <!--</property>-->

          <!--</properties>-->

          <!--&lt;!&ndash; 使allure-results在target文件夹下(很重要) &ndash;&gt;-->

          <!--<workingDirectory>target/</workingDirectory>-->

        <!--</configuration>-->

        <!--<dependencies>-->

          <!--<dependency>-->

            <!--<groupId>org.aspectj</groupId>-->

            <!--<artifactId>aspectjweaver</artifactId>-->

            <!--<version>${aspectj.version}</version>-->

          <!--</dependency>-->

        <!--</dependencies>-->

      <!--</plugin>-->

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-surefire-plugin</artifactId>

        <version>2.20</version>

        <configuration>

          <includes>

            <include>**/**.java</include>

          </includes>

          <argLine>

              -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"

          </argLine>

          <!--生成allure-result的目录-->

          <systemProperties>

            <property>

              <name>allure.results.directory</name>

              <value>${project.build.directory}/allure-results</value>

            </property>

            <property>

              <name>allure.link.issue.pattern</name>

              <value>https://example.org/issue/{}</value>

            </property>

          </systemProperties>

          <!--生成allure-result的目录-->

          <!--<systemProperties>-->

            <!--<property>-->

              <!--<name>allure.results.directory</name>-->

              <!--<value>./target/allure-results</value>-->

            <!--</property>-->

          <!--</systemProperties>-->

        </configuration>

        <dependencies>

          <dependency>

            <groupId>org.aspectj</groupId>

            <artifactId>aspectjweaver</artifactId>

            <version>${aspectj.version}</version>

          </dependency>

        </dependencies>

      </plugin>

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-surefire-plugin</artifactId>

        <version>2.19</version>

        <configuration>

          <suiteXmlFiles>

            <!--该文件位于工程根目录时,直接填写名字,其它位置要加上路径-->

            <!--suiteXmlFile>src/main/resources/testngXml/${xmlFileName}</suiteXmlFile-->

            <suiteXmlFile>${project.basedir}/target/classes/testngXml/${xmlFileName}</suiteXmlFile>

          </suiteXmlFiles>

        </configuration>

      </plugin>

      <!--增加此配置,防止编译后xls文件乱码-->

      <!--Maven resources 插件会对文本资源文件进行转码,但是它无法区分文件是否是纯文本文件还是二进制文件.于是二进制文件在部署过程中也就被转码了.-->

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-resources-plugin</artifactId>

        <version>2.6</version>

        <configuration>

          <nonFilteredFileExtensions>

            <!-- 不对xls进行转码 -->

            <nonFilteredFileExtension>xls</nonFilteredFileExtension>

            <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>

          </nonFilteredFileExtensions>

        </configuration>

      </plugin>

    </plugins>

  </build>

  <!--通过“-P”引用变量-->

  <profiles>

    <!-- uat测试环境 -->

    <profile>

      <id>dev</id>

      <properties>

        <env>dev</env>

      </properties>

    </profile>

    <!-- sit测试环境 -->

    <profile>

      <id>sit</id>

      <properties>

        <env>sit</env>

      </properties>

      <activation>

        <activeByDefault>true</activeByDefault><!--默认启用的是sit环境配置-->

      </activation>

    </profile>

  </profiles>

</project>

需要留意的是:

     1. profile  这里我设置的是默认的sit环境

    2.<suiteXmlFile>${project.basedir}/target/classes/testngXml/${xmlFileName}</suiteXmlFile>这里是寻找外部文件xmlFileName

二、Jenkins页面的设置

1.项目的设置


2.构建设置


构建过程:clean test -P${env} -DxmlFileName=${xmlFileName}


其中-P${env}为系统默认,根据默认指定的sit来获取配置项及获取测试数据


Jenkins指定测试数据${xmlFileName}的位置
设置传递变量${xmlFileName}

3.设置测试报告


4.解析框架                ------没有最好的框架只有适合自己的


生成的environment.properties传递给allure测试报告用来获取当前的环境信息

5.展示结果为:



页面结果确实比testng的好看很多,所以在生成的测试报告中选择了这个

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容