美文网首页
JAVA接口自动化测试----Jenkins持续集成(二)

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

作者: 丛鹏 | 来源:发表于2019-12-14 15:35 被阅读0次

上一节介绍环境的准备和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的好看很多,所以在生成的测试报告中选择了这个

相关文章

网友评论

      本文标题:JAVA接口自动化测试----Jenkins持续集成(二)

      本文链接:https://www.haomeiwen.com/subject/rjysgctx.html