一、测试

TestNG 允许你将测试方法归类为不同的组。不仅仅是可以声明某个方法属于某个组,而且还可以让组包含其他的组。这样TestNG可以调用或者请求包含一组特定的组 (或者正则表达式)而排除其他不需要组的集合。这样,如果你打算将测试分成两份的时候,就无需重新编译。这个特点,会给你在划分组的时候带来很大的灵活性。

例如,通常将测试划分为两种类别是再常见不过的了:

检查性测试(Check-in test):这些测试在你提交新代码之前就会运行。它们一般都是很快进行的,并且保证没有哪个基本的功能是不好使的。

功能性测试(Functional test):这些测试涵盖你的软件中所有的功能,并且至少每天运行一次,不过你也可能希望他们持续的运行。

典型的来说,检测性测试通常是功能性测试的一个子集。TestNG允许你根据个人感觉来进行组划分。例如,你可能希望把你所有的测试类都划归为"functest"组,并且额外的有几个方法输入"checkintest"组。

  1. public class Test1 {
  2. @Test(groups = { "functest", "checkintest" })
  3. public void testMethod1() {
  4. }
  5. @Test(groups = {"functest", "checkintest"} )
  6. public void testMethod2() {
  7. }
  8. @Test(groups = { "functest" })
  9. public void testMethod3() {
  10. }
  11. }

通过下面的内容调用TestNG

  1. <test name="Test1">
  2. <groups>
  3. <run>
  4. <include name="functest"/>
  5. </run>
  6. </groups>
  7. <classes>
  8. <class name="example1.Test1"/>
  9. </classes>
  10. </test>

以上会运行上面那个类中所有的测试,当要使用checkintest进行调用的时候,就仅仅运行testMethod1()和testMethod2()。

下面是另外一个例子。这次使用正则表达式。假定有些测试方法不应该运行在Linux环境下,你的测试会看起来像:

  1. @Test
  2. public class Test1 {
  3. @Test(groups = { "windows.checkintest" })
  4. public void testWindowsOnly() {
  5. }
  6. @Test(groups = {"linux.checkintest"} )
  7. public void testLinuxOnly() {
  8. }
  9. @Test(groups = { "windows.functest" )
  10. public void testWindowsToo() {
  11. }
  12. }

然后你就可以使用下面这个 testng.xml 来只运行在Windows下的方法:

  1. <test name="Test1">
  2. <groups>
  3. <run>
  4. <include name="windows.*"/>
  5. </run>
  6. </groups>
  7. <classes>
  8. <class name="example1.Test1"/>
  9. </classes>
  10. </test>

注意:TestNG使用的是正则表达式,而不是通配符。注意这二者的区别

例如,"anything" 是匹配于 ".*" -- 点和星号 -- 而不是星号 "*".

二、组中组

测试组也可以包含其他组。这样的组叫做“元组”(MetaGroups)。例如,你可能要定义一个组all来包含其他的组,chekcintest 和functest。"functest"本身只包含了组windows和linux,而"checkintest"仅仅包含windows。你就可以在属性文件中这样定义:

  1. <test name="Regression1">
  2. <groups>
  3. <define name="functest">
  4. <include name="windows"/>
  5. <include name="linux"/>
  6. </define>
  7. <define name="all">
  8. <include name="functest"/>
  9. <include name="checkintest"/>
  10. </define>
  11. <run>
  12. <include name="all"/>
  13. </run>
  14. </groups>
  15. <classes>
  16. <class name="test.sample.Test1"/>
  17. </classes>
  18. </test>

三、排除组

TestNG 允许你包含组,当然也可以排除之。

譬如说,因为最近的改动,导致当前的测试中断并且,你还没有时间修复这些问题都是司空见惯的。但是,你还需要自己的功能测试可以正确运行,所以,制药简单的让这些不需要的测试失效就可以了。但是别忘记在以后需要的时候,要重新让其生效。

一个简单的办法来解决这个问题就是创建一个叫做"broken"组,然后使得这些测试方法从属于那个组。例如上面的例子,假设我知道testMethod2()会中断,所以我希望使其失效:

  1. @Test(groups = {"checkintest", "broken"} )
  2. public void testMethod2() {}

而我所需要做的一切就是从运行中排除这个组:

  1. <test name="Simple example">
  2. <groups>
  3. <run>
  4. <include name="checkintest"/>
  5. <exclude name="broken"/>
  6. </run>
  7. </groups>
  8. <classes>
  9. <class name="example1.Test1"/>
  10. </classes>
  11. </test>

通过这种办法,我们既可以得到整洁的测试运行,同时也能够跟踪那些需要稍后修正的中断的测试。

注意:你可以可以通过使用"enabled"属性来完成,这个属性适用于@Test 和 @Before/After annotation。

四、局部组

可以在类级别定义组,之后还可以在方法级定义组:

  1. @Test(groups = { "checkin-test" })
  2. public class All {
  3. @Test(groups = { "func-test" )
  4. public void method1() { ... }
  5. public void method2() { ... }
  6. }

在这个类中,method2() 类级组"checkin-test"的一部分,而method1()即属于"checkin-test"也属于"func-test"组。

---------------------------------------------------------------------------

本文转载自http://blog.sina.com.cn/bestfeiyong

TestNG 二、测试组的更多相关文章

  1. APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例

    前言 继上篇环境篇后,本篇主要对TestNG进行介绍,给出最最基础的两个实例,通过本文后,学会并掌握TestNG测试用例的编写与运行,以及生成美化后的报告.下一篇为HTTP接口实战(国家气象局接口自动 ...

  2. TestNG之Factory

    如果我们的测试方法中,同一个变量需要很多个不同的测试数据,那么这些测试数据由谁提供呢,testng提供了factory的注解,下面我们来一探究竟. 一.单独使用Factory 1.新建一个含有@Fac ...

  3. TestNG学习笔记 一

    一. 介绍 TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器). 编写一个测试的过程有 ...

  4. Junit和Spring

    @ContextConfiguration 用来指定加载的Spring配置文件的位置,会加载默认配置文件 例如下例会加载:classpath:/com/example/MyTest-context.x ...

  5. 数据驱动测试二:使用TestNG和CSV文件进行数据驱动

    转载:https://blog.csdn.net/heart_1014/article/details/52013173 使用@DataProvider注解定义当前方法中的返回对象CSV文件(存放测试 ...

  6. TestNG系列(二)TestNG注解

    前言 TetsNG提供了很多注解,允许测试人员灵活地组织测试用例 一.@Test @Tets是TestNG的核心注解,被注解的方法,表示为一个测试方法. description属性 @Test(des ...

  7. Appium+Java 自动化测试系列二:Maven+Testng

    新建Maven项目作为测试项目分为3个步骤: 1.Eclipse安装Testng 插件 2.新建Maven项目 3.引入Testng 一.Eclipse安装Testng插件 TestNG安装可选择在线 ...

  8. 记录java+testng运行selenium(二)---定义元素类及浏览器

    一: 元素类 整体思路: 1. 根据状态可分可见和不可见两种 2. 同一个路径可以查找单个元素或多个元素 3. 获取元素text或者指定的value值 4. selenium对元素操作有两种,一是通过 ...

  9. testNG官方文档翻译-5 测试方法,测试类和测试组

    5.1 - 测试方法 测试方法是被 @Test注解的方法.这些方法的返回值会被忽略,除非在testng.xml中将allow-return-values设置为true. <suite allow ...

随机推荐

  1. websocket小荔枝

    关于websocket原理和好处请参考百度,这里只是代码. var ws = new WebSocket('ws://echo.websocket.org/'); ws.onopen = functi ...

  2. lr中exit(-1)和return 0的区别

    LR脚本实践:关于lr中exit(-1)和return 0的区别 exit(-1):从当前action里面exit(-1)所在行,当前迭代里面直接退出来,终止运行: return 0:忽略当前acti ...

  3. 转:LLVM与Clang的概述及关系

    转:http://www.cnblogs.com/saintlas/p/5738739.html      LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言 ...

  4. 决策树:ID3与C4.5算法

    1.基本概念 1)定义: 决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系,树中每个节点代表的某个可能的属性值. 2)表示方法: 通过把实例从根结点排列到某个叶子结点来分类实例,叶子 ...

  5. CRT【p3868】[TJOI2009]猜数字

    Description 现有两组数字,每组k个,第一组中的数字分别为:a1,a2,...,ak表示,第二组中的数字分别用b1,b2,...,bk表示.其中第二组中的数字是两两互素的.求最小的非负整数n ...

  6. CSS3选择器、低版本解决方案及各浏览器私有前缀

    一.基本选择器 通配选择器:* 元素选择器:div.p… ID选择器:#id 类选择器:.className 群组选择器:选择器1,选择器2 主流浏览器全部支持 二.层次选择器 后代选择器: div ...

  7. 【BZOJ 3993】【SDOI 2015】序列统计

    http://www.lydsy.com/JudgeOnline/problem.php?id=3992 这道题好难啊. 第一眼谁都能看出来是个dp,设\(f(i,j)\)表示转移到第i位时前i位的乘 ...

  8. luogu P1060 开心的金明

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今天 ...

  9. JZYZOJ1454 NOIP2015 D2T3_运输计划 二分 差分数组 lca tarjan 树链剖分

    http://172.20.6.3/Problem_Show.asp?id=1454 从这道题我充分认识到我的脑子里好多水orz. 如果知道了这个要用二分和差分写,就没什么思考上的难点了(屁咧你写了一 ...

  10. poj 1681(Gauss 消元)

    Painter's Problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5875   Accepted: 2825 ...