这里是一份TestNG中的可用注解及其属性的概述。

一、用于一个TestNG类的信息配置的注解:

  • @BeforeSuite:被BeforeSuite注解的方法将在其所在suite中的所有test运行之前执行;
注:例如BeforeSuite方法在Class1中,test1方法在Class1中,test2方法在Class2中,Class2在testng中优先级较高,则执行顺序BeforeSuite-》test2-》test1
  • @AfterSuite:被AfterSuite注解的方法将在其所在suite中的所有test运行之后执行;
注:多个类中多个BeforeSuite/AfterSuite将按照testng.xml中的顺序执行
Class1:BeforeSuite1,AfterSuite1,test1;Class2:BeforeSuite2,AfterSuite2,test2;
testng.xml顺序:Class2-》Class1
执行顺序 BeforeSuite2-》BeforeSuite1-》test2-》test1-》AfterSuite2-》AfterSuite1
  • @BeforeTest:被注解的方法将在test标签包含的类中的任一测试方法运行之前执行;
注:BeforeTest方法属于类Class1,Class1、Class2被包含在标签test模块中,Class1、Class2分别含有多个method
Class1:BeforeTest方法,test1,test2,;Class2:test3,test4
testng.xml配置:test标签包含Class1、Class2
执行顺序 BeforeTest-》test1-》test2-》test3-》test4
  • @AfterTest:被注解的方法将在test标签包含的类中的所有测试方法运行之后执行;
  • @BeforeGroups:这个被注解的方法将在组列表执行之前运行,这个方法用于保证组列表中的第一个测试方法被触发之前快速执行;
注:groups用于给类(多个类)中的方法分组,在testng.xml中体现在在 test标签中配置类的groups,该test仅运行groups中的方法;
在类中通过 @Test的groups参数确定方法所属组,在 @BeforeGroups中同样需要groups参数确定方法所属组
  • @AfterGroups:这个被注解的方法将在组列表执行之后运行,这个方法用于保证组列表中的最后一个测试方法被触发之后快速执行;
  • @BeforeClass:被注解的方法将在当前类中第一个测试方法被触发之前执行;
  • @AfterClass:被注解的方法将在当前类中所有测试方法被运行完之后执行;
  • @BeforeMethod:被注解的方法将在每一个测试方法运行之前执行;
  • @AfterMethod:被注解的方法将在每一个测试方法运行之后执行;

一个TestNG类的父类的注解表现

当在一个TestNG类的父类中加入上述注解时,相应的注解行为将在TestNG类中被继承。当需要对多个测试类的通用父类进行集中的测试设置时,继承功能将很有用。在继承的情况下,TestNG将保证"@Before"的方法按继承顺序执行(高级父类优先,然后是继承链),"After"的方法逆序执行(按继承链反向执行)。

参数:

  • alwaysRun:对于Before方法,当该参数设置为true时,不论被配置方法属于哪个群组,它都会执行;对于After方法,当该参数设置为true时,即使前面触发的方法执行失败或者被跳过,被配置方法都会执行。
注:即当一个before方法被配置为alwaysRun时,其执行不再受群组属性限制;
例如类Class1中,beforeTest方法所属groups={"functest"},alwaysRun=true,其他test1、test2方法为groups={"checkintest"},xml中配置 test运行的群组为checkintest,但在执行时,忽略群组属性
执行顺序为 beforeTest-》test1、test2
  • dependsOnGroups:这个方法需要依赖的群组列表;
  • dependsOnMethods:这个方法需要依赖的方法列表;
注:用于定义执行顺序,DependsOnMethods是强依赖,DependsOnGroups是弱依赖
  • enabled:这个类或方法是否激活;
注:enabled=false时,该方法不执行;默认为true
  • groups:这个方法/类所属于的群组列表;
  • inheritGroups:如果为true,这个方法将属于类级别中被 @Test注解的群组

二、DataProvider

  • @DataProvider:将一个方法标记为另一个 @Test方法的数据源;被标记的方法需返回一个Object[][],其中每一个Object[]都是 @Test方法的一份参数列表。想要接收数据源的 @Test方法需要标注一个和数据源相同的名字;

参数:

  • name:数据源的唯一名字,供其他测试方法通过名字引用数据源。如果该参数没有被提供,将被自动设置为这个被注解方法的名字。
  • parallel:如果设置为true,则引用data provider的tests将会并行执行,默认值为false。

三、Factory

  • @Factory:将一个方法标记为工厂,该被标记方法返回的数据将会被TestNG作为测试类使用,这个方法必须返回Object[]
关于Factory,有一篇详细介绍
http://www.cnblogs.com/zhaochifan/p/5216383.html

四、Listeners

  • @Listeners:定义在测试类上放置的监听器

参数

  • value:一系列继承了org.testng.ITestNGListener的类

五、Parameters

  • @Parameters:描述如何将参数传递给一个 @Test方法;
参考文档:http://blog.csdn.net/kaku21/article/details/49943443

参数

  • value:用于填充该方法的参数的变量列表;

六、Test

  • @Test:将一个方法/类标记为测试的一部分;

参数:

  • alwaysRun:如果设置为true,即使这个测试方法所依赖的方法运行失败,它仍然会运行;
  • dataProvider:用于标注这个测试方法的data provider的名称
  • dataProviderClass:标注其data provider所在的类。如果没有使用该参数,测试方法将在其所在类或其父类中寻找data provider;如果这个参数被使用了,测试方法的data provider方法需要是该类中的静态方法;
  • dependsOngroups:测试方法所依赖的组列表
  • dependsOnMethods:测试方法所依赖的方法列表
  • description:测试方法的描述信息
  • enabled:关于这个类/方法的其他方法是否可用
  • expectedExceptions:期望测试方法抛出的异常列表。如果没有异常或者一个不同于该列表的异常被抛出,该测试将被标记为失败
  • groups:这个类/方法所属的组列表
  • invocationCount:这个测试方法应该被触发的次数
  • invocationTimeOut:这个测试方法被全部触发的所有累计时间的最大值,以毫秒记;如果invocationCount未使用,此属性将被忽略;
  • priority:这个测试方法的优先级,低级别的方法将优先被调用;
  • successPercentage:这个测试方法期望运行成功的百分比
  • singleThreaded:如果设置为true,这个测试类里的所有方法将在同一个线程中执行,即使这些方法带着参数parallel="method"在运行;这个属性只能被使用在类级别,如果被使用在方法级别将会被忽略。PS:这个属性曾用名为sequential。
  • timeOut:测试消耗时间的最大值,以秒记;
  • threadPoolSize:测试方法的线程池数量,这个测试方法将被以invocationCount标记的多个线程触发;PS:如果invocationCount未设置,此属性将被忽略。

testNG官方文档翻译-2 注解的更多相关文章

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

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

  2. testNG官方文档翻译-3 testng.xml

    你可以通过以下几种不同的方法触发TestNG: 用一个testng.xml文件 使用ant 从命令行触发 这个章节将会介绍testng.xml的格式(你也可以在下面找到关于ant和命令行的内容). 关 ...

  3. testNG官方文档翻译-1 简介

    官方文档链接http://testng.org/doc/documentation-main.html 简介 TestNG是一个被设计用来简化广泛的测试需求的测试框架,它既可应用于单元测试(测试一个独 ...

  4. testNG官方文档翻译-4 运行TestNG

    TestNG可以通过不同的方法触发运行: 命令行 ant Eclipse IntelliJ's IDEA

  5. Spring官方文档翻译(1~6章)

    Spring官方文档翻译(1~6章) 转载至 http://blog.csdn.net/tangtong1/article/details/51326887 Spring官方文档.参考中文文档 一.S ...

  6. GreenDao官方文档翻译(上)

    笔记摘要: 上一篇博客简单介绍了SQLite和GreenDao的比较,后来说要详细介绍下GreenDao的使用,这里就贴出本人自己根据官网的文档进行翻译的文章,这里将所有的文档分成上下两部分翻译,只为 ...

  7. Retrofit官方文档翻译

    Retrofit官方文档翻译 官方文档网址 http://square.github.io/retrofit/ 介绍 Retrofit 将你的 HTTP API 转换为 Java 接口. public ...

  8. Data Binding Guide——google官方文档翻译(下)

    这篇博客是Data Binding Guide官网文档翻译的下篇.假设没看过前半部分翻译的能够先看Data Binding Guide--google官方文档翻译(上)  一,数据对象 不论什么不含业 ...

  9. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Flume官方文档翻译--Flume 1.7.0 User Guide (unr ...

随机推荐

  1. PHP面试 MySQL数据库基础

    MySQL数据库基础 MySQL数据类型 整数类型:TINYINT   SMALLINT   MEDIUMINT   INT   BIGINT 属性:UNSIGNED 长度:可以为整数类型指定宽度,列 ...

  2. PHP面试 PHP基础知识 十一(开发环境及相关配置)

    开发环境及相关配置 版本控制软件 集中式和分布式 集中式:集中式版本控制工具,版本库集中存放在中央服务器,团队成员里的每个人工作时从中央服务器下载代码,个人修改后再提交到中央服务器 分布式:分布式版本 ...

  3. 危险,几条可致命的Linux命令!

    1. rm -rf 命令 rm -rf命令是删除文件夹及其内容最快的方式之一.仅仅一丁点的敲错或无知都可能导致不可恢复的系统崩坏.下列是一些rm 命令的选项.rm 命令在Linux下通常用来删除文件. ...

  4. PAT甲级——A1148 WerewolfSimpleVersion【20】

    Werewolf(狼人杀) is a game in which the players are partitioned into two parties: the werewolves and th ...

  5. 转 mysql查询结果输出到文件

    mysql查询结果输出到文件   mysql查询结果导出/输出/写入到文件 方法一:直接执行命令:mysql> select count(1) from table  into outfile ...

  6. 截取url参数

    //获得参数(只对字母数字等有效,参数值为中文则不能传) function getQueryString(name) { var reg = new RegExp("(^|&)&qu ...

  7. activiti网关

    activiti中有两种网关:并行网关,排他网关. 排他网关用于任务选择等情况,流程图如下 bpnm代码如下 <?xml version="1.0" encoding=&qu ...

  8. syslog-ng收集日志+ELK平台搭建教程

    syslog-ng部署: 用于接收交换机输出的日志. syslog-ng安装很简单,可以顺便搜一下,文章有很多.我是yum直接安装的. syslog-ng配置: vi /etc/syslog-ng/s ...

  9. teb-安装

    源码:https://github.com/rst-tu-dortmund/teb_local_planner.git 以husky为例子: 1.在gazebo里面配置好机器人底盘的环境 roslau ...

  10. POJ-1639 Picnic Planning 度数限制最小生成树

    解法参考的论文:https://wenku.baidu.com/view/8abefb175f0e7cd1842536aa.html 觉得网上的代码好像都是用邻接矩阵来实现的,觉得可能数据量大了会比较 ...