专栏首页凯哥Java单元测试框架系列教程9-测试方法、类以及组的概念

单元测试框架系列教程9-测试方法、类以及组的概念

本篇来介绍Test Methods, Test classes ,Test groups的基本概念。了解这三个基本概念,有助于我们学习其他的功能。前面介绍了@Test下的before和after属性,其中就有beforeMethods和afterGroups等。

这三个都会在testng.xml文件中存在。

1. Test Methods(测试方法)

官方定义是,凡是方法(或者叫函数)前面添加了@Test注释,就叫测试方法。这个很好理解,我们实际测试中,写的测试用例,其实就是许多个添加@Test的方法。

2. Test Classes(测试类)

测试类,一般我们新建一个Java类文件,如果里面方法有@Test,那么就是一个测试类文件。上面是写的复数。这个在testng.xml文件里可以体现,classes下可以有一个或者多个测试类文件。Classes相当于就是一个装class的容器,而class又相当于一个装method的容器。

<classes>     <class name="com.java.learn.TestMethodDemo"/> </classes>

3. Test Groups(测试组)

测试组,一个组可以包含多个methods。还是可以组嵌套,也是就是一个组可以属于是另外一个组管理。

下面我们来举例,两个不同组用例的管理,我们有两个组,接口测试和功能测试。其实接口测试是属于功能测试的子集。

新建一个测试类,写一些方法,有些方法属于接口测试,也同时属于功能测试,有些只属于一个。

package com.java.learn; import org.testng.annotations.Test; /**  * create by Anthony on 2017/11/7  */ public class TestGroupsDemo {     @Test(groups = {"API Test", "Fucntion Test"}) public void test01(){         System.out.println("API Testing and Function testing");     }     @Test(groups = {"API Test"}) public void test02(){         System.out.println("API Testing");     }     @Test(groups = {"Function Test"}) public void test03(){         System.out.println("Function testing");     }     @Test public void test04(){         System.out.println("not in API and Function testing");     } }

 需求1:只需要运行API Test,也就是说不能运行Function Test.所以这个时候,testng.xml就要这么去写才能实现。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Default Suite">     <test name="Testng_learn" >         <groups>             <run>                 <include name="API Test"/>             </run>         </groups>         <classes>             <class name="com.java.learn.TestGroupsDemo"/>         </classes>     </test> <!-- Java_Learn --> </suite> <!-- Default Suite -->

 运行结果:

[TestNG] Running:

  C:\Users\Administrator\IdeaProjects\Java_Learn\testng.xml

API Testing and Function testing

API Testing

从打印结果来看,确实只运行了API Test这个group的用例。同样道理,把testng.xml对应的API Test换成Function Test就可以执行功能测试用例,而不会执行接口测试用例。

需求2:我只需要执行API Test和Function Test

我们写了4个用例,其中有一个不属于API Test和Function Test,这个是不能被运行

Testing.xml如下设置

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Default Suite">     <test name="Testng_learn" >         <groups>             <run>                 <include name="Function Test"/>                 <include name="API Test"/>             </run>         </groups>         <classes>             <class name="com.java.learn.TestGroupsDemo"/>         </classes>     </test> <!-- Java_Learn --> </suite> <!-- Default Suite -->

这种方法很常见,例如我们一次性运行两个或者两个以上的测试组用例,就可以写多个include标签。

方法2:

利用正则匹配。有时候我们group的名称设置很长,我们记不住,这个时候就建议采用正则匹配,例如以API开头的group执行。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Default Suite">     <test name="Testng_learn" >         <groups>             <run>                 <include name="API.*"/>                 <include name="Function.*"/>             </run>         </groups>         <classes>             <class name="com.java.learn.TestGroupsDemo"/>         </classes>     </test> <!-- Java_Learn --> </suite> <!-- Default Suite -->

需求3:执行除API 和Funcation之外的用例

除什么之外,我们可以用excloude标签来实现。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Default Suite">     <test name="Testng_learn" >         <groups>             <run>                 <exclude name="API Test"/>                 <exclude name="Function Test"/>             </run>         </groups>         <classes>             <class name="com.java.learn.TestGroupsDemo"/>         </classes>     </test> <!-- Java_Learn --> </suite> <!-- Default Suite -->

需求4:实现组嵌套管理执行用例

前面我们已经创建了两个组,一个API Test,一个叫Function Test。现在我们用一个All 的组来管理这两个组。只要我run标签里,写执行All,那么就相当于执行了API Test和Function Test。这个场景,在实际工作中是肯定要使用的。例如webui自动化中,执行全部的用例,其实就是一个模块设置一个组,这些模块组都归All组管。

Testing.xml的设置如下

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Default Suite">     <test name="Testng_learn" >         <groups>             <define name="all">                 <include name="API Test"/>                 <include name="Function Test"/>             </define>             <run>                 <include name="all"/>             </run>         </groups>         <classes>             <class name="com.java.learn.TestGroupsDemo"/>         </classes>     </test> <!-- Java_Learn --> </suite> <!-- Default Suite -->

这里要注意,有些用例如果是不属于任何一个组,这里运行All,这些没有划分到某一个组的用例是不会执行的。所以,在实际工作中,建议每个用例都写上属于什么组,直接把模块当做组理解肯定就行,这样不会遗漏。

本篇新介绍了@Test下的groups属性,已经如何利用testng.xml来设置不同的组需求到达不同用例执行和管理的目的。关于测试方法,测试类和测试组就介绍到这里。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【史上最全】国内外常用精品API接口汇总

    API是获取网络服务最便捷的方式,合理地使用API开发项目可以大大提高开发效率,把精力都集中在程序的业务逻辑之上,避免重复造轮子。推荐给大家个人觉得很赞的第三方...

    凯哥Java
  • spring boot 2.x 整合mybaits及分页插件

    在众多ORM持久层框架中,凯哥还是比较喜欢使用mybatis。至于mybatis的好处在此就不一一列举了。本篇主要介绍的是在spring boot中怎么整合my...

    凯哥Java
  • document.createElement()的用法

    分析代码时,发现自己的盲点——document.createElement(),冲浪一番,总结了点经验。

    凯哥Java
  • 如何在CentOS 7上安装Elasticsearch 1.7,Logstash 1.5和Kibana 4.1(ELK Stack)

    在本教程中,我们将介绍在CentOS 7上安装Elasticsearch ELK Stack,即Elasticsearch 1.7.3,Logstash 1.5...

    苏子晨
  • 云市场中的API 服务类商品为什么不支持退款

    云市场中的API 服务类商品为什么不支持退款 ,云市场中的API 服务类商品为什么不支持退款,云市场中的API 服务类商品为什么不支持退款 。云市场中的API ...

    用户5789746
  • 天下无难试之ArrayList面试刁难大全

    ArrayList可能是Java数据结构中最简单的一种了,即使一个非Java程序员可能也知道这个数据结构,因为所有的语言中都有这样的类似的数据结构。可是在经历过...

    老钱
  • 如何在Ubuntu 14.04上安装Elasticsearch 1.7,Logstash 1.5和Kibana 4.1(ELK Stack)

    在本教程中,我们将在Ubuntu 14.04上重新安装Elasticsearch ELK Stack,即Elasticsearch 1.7.3,Logstash...

    水门
  • 一文快速上手Logstash

    Elasticsearch是当前主流的分布式大数据存储和搜索引擎,可以为用户提供强大的全文本检索能力,广泛应用于日志检索,全站搜索等领域。Logstash作为E...

    michelmu
  • 大数据技术之_03_Hadoop学习_01_入门_大数据概论+从Hadoop框架讨论大数据生态+Hadoop运行环境搭建(开发重点)

    HDFS(Hadoop Distributed File System)的架构概述,如图2-4所示。

    黑泽君
  • spring cloud 配置zuul实用

    前面我们通过Ribbon或Feign实现了微服务之间的调用和负载均衡,那我们的各种微服务又要如何提供给外部应用调用呢。

    爱撸猫的杰

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动