惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
aimingoo的专栏
aimingoo的专栏
I
InfoQ
C
Check Point Blog
IT之家
IT之家
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
Last Week in AI
Last Week in AI
GbyAI
GbyAI
P
Proofpoint News Feed
量子位
Stack Overflow Blog
Stack Overflow Blog
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
B
Blog
T
The Blog of Author Tim Ferriss
H
Help Net Security
云风的 BLOG
云风的 BLOG

博客园 - GeneJiang

窗口函数的使用 拉链表(Zipper Table)完整总结 —— 数据仓库 SCD Type 2 的经典实现 Kimball 维度建模:数据仓库领域最实用的“用户友好”方法论 DMP 数据接入测试全攻略:从“水龙头”把关到端到端信任 —— 理论解析 + 阿里云 DataWorks、AWS Glue、Azure Data Factory + 自研 EMR(基于 CDH)实战经验 ETL 全链路数据污染与逻辑错误定位实战经验分享 资产损失防控关键点-那些年被薅的“羊毛” 计算广告中常用的计算单位 MVC设计模式(Python) Jupyter NoteBook 的快捷键使用指南 Hive常用函数 Hive Tutorial(一) - Hive的数据类型 195 Tenth line-取第十行 Python常用库之Requests自我总结 Linux基本命令(一) Presto Step by Step之一Presto简介 python 判断字符串是否包含子字符串 Python常用的排序 CentOS7安装(三)- 配置阿里云yum源 OSQA的配置 MySQL学习 (三) Limit-Distinct-Union
基于TestNG和Maven的接口测试之(一)- 基础配置
GeneJiang · 2019-07-15 · via 博客园 - GeneJiang

TestNG基本介绍

TestNG是Java中的一个测试框架,是一个目前很流行实用的单元测试框架,有完善的用例管理模块,配合Maven能够很方便管理依赖第三方插件。使用TestNG可以做功能、接口、单元、集成的自动化测试,最常见的是结合selenium做Web页面的自动化测试和结合httpclient的接口测试,它使用Java注释去写测试方法。主要特点:

  • 强大的注解功能;
  • 数据驱动;
  • 灵活的测试配置;
  • 支持多种并发测试策略;
  • 可以和多种工具(插件)协同使用,比如Eclipse、IntelliJ IDEA和Maven等。

测试人员一般用TestNG来写自动化测试,开发人员一般用Junit写单元测试,TestNG适合测试人员使用的原因:

  • 比Junit涵盖功能更全面的测试框架;
  • Junit更适合隔离性比较强的单元测试;
  • TestNG更适合复杂的集成测试。

TestNG和Maven协同使用

前提条件: 安装Java SDK。

安装和配置

  1. 安装与配置下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  2. Eclipse:https://eclipse.org/downloads/
  3. Intellij IDEA: https://www.jetbrains.com/idea/
  4. Maven:http://maven.apache.org/download.cgi#

Maven配置和使用

环境配置

  1. 将 Maven 下载到本地解压后

  2. 设置环境变量"我的电脑"右键菜单->属性->高级->环境变量->系统变量->新建

    • 变量名:MAVEN_HOME
    • 变量值:D:\Java_maven\apache-maven-3.6.3\
  3. 找到"Path"变量名 ->"编辑"添加如下:

    • 变量名:Path
    • 变量值:MAVEN_HOME%\bin;
  4. 添加好了以后,打开"cmd"运行"mvn -version"来测试Maven是否配置正确

    Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
    Maven home: D:\Java_maven\apache-maven-3.6.3\bin\..
    Java version: 1.8.0_161, vendor: Oracle Corporation, runtime: D:\Java\jdk1.8.0_161\jre
    Default locale: zh_CN, platform encoding: GBK
    OS name: "windows 10", version: "10.0", arch: "x86", family: "windows"
    

Maven的配置

  1. 配置Maven仓库

    将maven的仓库指向自己的源代码存在的位置。

    • 修改 Maven 仓库的路径。 打开...\apache-maven-3.6.3\conf\settings.xml 文件, 大概在49行到57行之间的位置做如下修改:

      <localRepository>D:\\Git_genejiang2012\\my_testng\</localRepository>
      
  2. 打开IDEA
    2.1 新建Maven的project

    2.2 打开IDEA的Settings, 修改Maven的路径, maven的路径为maven存放的本地路径

    2.3 打开项目文件下的POM.xml文件

    • 增加maven的插件下载路径

      <dependencies>
          <dependency>
              <groupId>org.testng</groupId>
              <artifactId>testng</artifactId>
              <version>7.1.0</version>
              <scope>test</scope>
          </dependency>
      </dependencies>
      
    • 加入testng的版本信息, maven自动下载相关插件

      <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.1.0</version>
            <scope>test</scope>
        </dependency>
      </dependencies>`
      
    • 增加Build的信息

      <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>${jdk.version}</source><!-- 源代码使用的开发版本 -->
                    <target>${jdk.version}</target><!-- 需要生成的目标class文件的编译版本 -->
                    <!-- 解决maven test命令时console出现中文乱码乱码 -->
                    <argLine>-Dfile.encoding=UTF-8</argLine>
                    <testFailureIgnore>true</testFailureIgnore>
                    <suiteXmlFiles>
                        <suiteXmlFile>testNG.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
      
            <!-- 添加插件 关联testNg.xml -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.15</version>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                    <suiteXmlFiles>
                        <file>testNG.xml</file>
                    </suiteXmlFiles>
                    <!--<workingDirectory>target/</workingDirectory>-->
                </configuration>
            </plugin>
        </plugins>
      
        <!--配置resources 资源-->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.xls</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
      </build>
      

    2.4 在当前project创建testNG.xml

    <?xml version="1.0" encoding="utf-8" ?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
      <suite name="my_test" parallel="false">
          <test name="testDemo1">
              <classes>
                  <class name="com.genestudio.test.TestDemo"></class>
              </classes>
          </test>
      </suite>
    

    2.5 新建package, com.genestudio.test, 在该package下面创建TestDemo

    
      package com.chiefclouds.test;
    
      import org.testng.annotations.AfterClass;
      import org.testng.annotations.AfterGroups;
      import org.testng.annotations.AfterMethod;
      import org.testng.annotations.AfterSuite;
      import org.testng.annotations.AfterTest;
      import org.testng.annotations.BeforeClass;
      import org.testng.annotations.BeforeGroups;
      import org.testng.annotations.BeforeMethod;
      import org.testng.annotations.BeforeSuite;
      import org.testng.annotations.BeforeTest;
      import org.testng.annotations.Test;
    
    
      public class TestDemo {
          @BeforeSuite
          public void beforeSuite(){
              System.out.println("Before Suite!");
          }
    
          @AfterSuite
          public void afterSuite(){
              System.out.println("After Suite!");
          }
    
    
          @BeforeTest
          public void beforeTest(){
              System.out.println("Before Test");
          }
    
      }
    

    2.6 maven中run test, 查看log 结果

      [INFO] -------------------------------------------------------
      [INFO]  T E S T S
      [INFO] -------------------------------------------------------
      [INFO] Running TestSuite
      Hello TestNG
      [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.961 s - in TestSuite
      [INFO] 
      [INFO] Results:
      [INFO] 
      [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
      [INFO] 
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time:  3.535 s
      [INFO] Finished at: 2020-07-15T16:50:13+08:00
      [INFO] ------------------------------------------------------------------------
    

    2.7 查看targe中生成中测试报告,${project_dir}$\target\surefire-reports\emailable-report.html