testNG官方文档翻译-2 注解
这里是一份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未设置,此属性将被忽略。