testng翻译之二--注解

来源:互联网 发布:明星出道前照片 知乎 编辑:程序博客网 时间:2024/05/18 02:03

下面是testNG中提供的注解及对注解的解释:

注解 解释 @BeforeSuite @BeforeSuite注解的方法将在此套件<suite>中所有其他方法之前运行 @AfterSuite @AfterSuite注解的方法将在此套件<suite>中所有其他方法之后运行 @BeforeTest @BeforeTest注解的方法将在此套件中<suite>所有的带@Test标签的方法之前运行; @AfterTest @AfterTest注解的方法将在此套件<suite>中所有的带@Test标签的方法之后运行; @BeforeGroups @BeforeGroups注解的方法在 包含在组列表中配置的任一方法 之前运行; @AfterGroups @AfterGroups注解的方法在 包含在组列表中配置的任一方法 之后运行; @BeforeClass @BeforeClass注解的方法在 调用当前类中的第一个Test方法之前运行; @AfterClass @AfterClass注解的方法在 调用当前类中的所有的Test方法运行之后再运行; @BeforeMethod @BeforeMethod注解的方法在 每个测试方法之前运行; @AfterMethod @AfterMethod注解的方法在 每个测试方法之后运行;

下面通过一个demo来看每个注解所修饰方法的执行顺序:

  • testngDemo类
  • testngDemo2类
  • testng.xml

testngDemo类

import org.testng.annotations.*;/** * Created by wei.hu on 2016/12/30. */public class testngDemo {    @BeforeSuite    public void beforSuiteTest() {        System.out.println("BeforeSuite");    }    @AfterSuite    public void afterSuiteTest() {        System.out.println("AfterSuite");    }    @BeforeTest    public void beforeTest() {        System.out.println("BeforeTest");    }    @AfterTest    public void afterTest() {        System.out.println("AfterTest");    }    @BeforeGroups    public void beforeGroupsTest() {        System.out.println("BeforeGroupsTest");    }    @AfterGroups    public void afterGroupsTest() {        System.out.println("AfterGroupsTest");    }    @BeforeClass    public void beforeClassTest() {        System.out.println("BeforeClassTest");    }    @AfterClass    public void afterClassTest() {        System.out.println("AfterClassTest");    }    @BeforeMethod    public void beforeMethodTest() {        System.out.println("BeforeMethod");    }    @AfterMethod    public void afterMethodTest() {        System.out.println("AfterMethod");    }    @Test    public void demo1Test() {        System.out.println("Test1");    }    @Test    public void demo2Test() {        System.out.println("Test2");    }}

testngDemo2类

import org.testng.annotations.*;/** * Created by wei.hu on 2016/12/30. */public class testngDemo2 {    @BeforeSuite    public void beforSuiteTest() {        System.out.println("BeforeSuite_");    }    @AfterSuite    public void afterSuiteTest() {        System.out.println("AfterSuite_");    }    @BeforeTest    public void beforeTest() {        System.out.println("BeforeTest_");    }    @AfterTest    public void afterTest() {        System.out.println("AfterTest_");    }    @BeforeGroups    public void beforeGroupsTest() {        System.out.println("BeforeGroupsTest_");    }    @AfterGroups    public void afterGroupsTest() {        System.out.println("AfterGroupsTest_");    }    @BeforeClass    public void beforeClassTest() {        System.out.println("BeforeClassTest_");    }    @AfterClass    public void afterClassTest() {        System.out.println("AfterClassTest_");    }    @BeforeMethod    public void beforeMethodTest() {        System.out.println("BeforeMethod_");    }    @AfterMethod    public void afterMethodTest() {        System.out.println("AfterMethod_");    }    @Test    public void demo1Test() {        System.out.println("Test1_");    }    @Test    public void demo2Test() {        System.out.println("Test2_");    }}

testng.xml

<?xml version="1.0" encoding="UTF-8" ?><suite name="autotest" parallel="methods" thread-count="1" verbose="1" time-out="600000">    <test name="test">        <classes>            <class name="testngDemo"/>            <class name="testngDemo2"/>        </classes>    </test></suite>

执行结果:

BeforeSuiteBeforeSuite_BeforeTestBeforeTest_BeforeClassTestBeforeMethodTest1AfterMethodBeforeMethodTest2AfterMethodAfterClassTestBeforeClassTest_BeforeMethod_Test1_AfterMethod_BeforeMethod_Test2_AfterMethod_AfterClassTest_AfterTestAfterTest_AfterSuiteAfterSuite_

结论:
在同一个<suite>中,对于多个<class>(假设有类A与类B),有如下的执行顺序:

注:同一个suite中的多个class的顺序无法确定(先执行A还是先执行B不确定)。
  • 执行类A中的@BeforeSuite注解的方法;
  • 执行类B中的@BeforeSuite注解的方法;
  • 执行类A中的@BeforeTest注解的方法;
  • 执行类B中的@BeforeTest注解的方法;
  • 执行类A中的@BeforeClass注解的方法;
  • 执行类A中的@BeforeMethod注解的方法;
  • 执行类A中的Test1方法;
  • 执行类A中的@AfterMethod注解的方法;
  • 执行类B中的@BeforeMethod注解的方法;
  • 执行类B中的Test2方法;
  • 执行类B中的@AfterMethod注解的方法;
  • 执行类B中的@AfterClass注解的方法;
  • 执行类B中的@BeforeMethod注解的方法;
  • 执行类B中的Test1方法;
  • 执行类B中的@AfterMethod注解的方法;
  • 执行类B中的@BeforeMethod注解的方法;
  • 执行类B中的Test2方法;
  • 执行类B中的@AfterMethod注解的方法;
  • 执行类B中的@AfterClass注解的方法;
  • 执行类A的@AfterTest注解的方法;
  • 执行类B的@AfterTest注解的方法;
  • 执行类A的@AfterSuite注解的方法;
  • 执行类B的@AfterSuite注解的方法;

参数 解释(对以上before、after注解的参数解释) alwaysRun 对于before方法(beforeSuite,beforeTest,beforeTestClass和beforeTestMethod,除了beforeGroups):如果设置为true,此配置方法将运行,而不管它属于什么组。对于after方法(afterSuite,afterClass,…):如果设置为true,即使先前调用的一个或多个方法失败或被跳过,此配置方法也将运行。 dependsOnGroups 此方法所依赖的组列表 dependsOnMethods 此方法依赖的方法列表 enabled 是否启用此类/方法 groups 此类/方法所属的组列表 inheritGroups If true, this method will belong to groups specified in the @Test annotation at the class level.
注解 解释 @DataProvider 将方法标记为为测试方法提供数据。 注释的方法必须返回一个Object [] [],其中每个Object []可以分配测试方法的参数列表。 想要从此DataProvider接收数据的@Test方法需要使用等于此注释名称的dataProvider名称。 name 此数据提供者的名称。 如果未提供,则此数据提供程序的名称将自动设置为方法的名称。 parallel 如果设置为true,此注解修饰的方法可被并行执行[翻译待确定]。
注解 解释 @Factory 将方法标记为Factory,返回的值将被TestNG用作Test类的对象,该方法必须返回Object[]
注解 解释 @Listeners 定义测试类上的监听器 value 一个扩展org.testng.ITestNGListener的类数组。
注解 解释 @Parameters 描述如何将参数传递到@Test方法。 value 用于填充此方法的参数的变量列表。
注解 解释 @Test 将类或方法标记为测试的一个单元 alwaysRun dataProvider dataProviderClass dependsOnGroups dependsOnMethods description enabled expectedExceptions groups invocationCount invocationTimeOut priority successPercentage singleThreaded timeOut threadPoolSize
0 0
原创粉丝点击