为了开发测试用例,TestNG提供了大量的标注annotations,用于在测试类中设置一个或多个测试方法。本文只是提供对TestNG标注的一览,具体用法见后续文章。
- @BeforeSuite,在测试类中修饰一个方法,对于该方法所在的testng.xml中的<suite>,对<suite>中的任意测试方法执行之前,先执行该方法;
- @AfterSuite,在测试类中修饰一个方法,对于该方法所在的testng.xml中的<suite>,对<suite>中的所有测试方法执行之后,再执行该方法;
- @BeforeTest,在测试类中修饰一个方法,对于该方法所在的testng.xml中的<test>,对<test>中的任意测试方法执行之前,先执行该方法;
- @AfterTest,在测试类中修饰一个方法,对于该方法所在的testng.xml中的<test>,对<test>中的所有测试方法执行之后,再执行该方法;
- @BeforeGroups,在测试类中修饰一个方法,对于该方法所在的testng.xml中的<groups>,对<groups>中的任意测试方法执行之前,先执行该方法;
- @AfterGroups,在测试类中修饰一个方法,对于该方法所在的testng.xml中的<groups>,对<groups>中的所有测试方法执行之后,再执行该方法;
- @BeforeClass,在测试类中修饰一个方法,该方法所在的测试类中的任意方法执行之前,先执行该方法;
- @AfterClass,在测试类中修饰一个方法,该方法所在的测试类中的其他所有方法执行之后,再执行该方法;
- @BeforeMethod,在测试类中修饰一个方法,该方法在任何一个测试方法执行之前执行;
- @AfterMethod,在测试类中修饰一个方法,该方法在任何一个测试方法执行之后执行;
说明:上述annotations共有的属性如下:
- alwaysRun,如果true,被修饰的方法将总是被执行(除了@BeforeGroups之外);
- dependsOnGroups,被修饰方法所依赖的组列表;
- dependsOnMethods,被修饰方法所依赖的其他方法的列表;
- enabled,被修饰方法是否被激活;
- groups,被修饰方法所属的组(可以有多个组);
- inheritGroups,如果true,被修饰方法还将被加入到定义测试类时由@Test设置的组;
- @DataProvider,在测试类中修饰一个方法,该方法返回Object[][]类型的数据,作为其他测试方法的数据源。
- name,为数据源定义一个唯一的名字,供其他测试方法通过名字引用数据源
- parallel,默认false,如果true则引用该数据源的测试方法并行执行
- @Factory,在测试类中修饰一个方法,该方法可以动态生成多个测试类的不同实例,以Object[]类型返回,供后续执行测试方法使用。
- @Parameters,在测试类中修饰一个测试方法,为被修饰的测试方法设置参数
- value,测试方法的参数列表
- @Listeners,修饰一个测试类,为测试类设置监听器
- value,测试类的监听器列表
- @Test,修饰一个测试类,或者在测试类中修饰一个方法。修饰一个测试类时,测试类中的所有public的方法都将成为测试方法。
- alwaysRun,如果true,被修饰的方法将总是被执行(除了@BeforeGroups之外);
- dataProvider,数据源的name;
- dataProviderClass,数据源所在的Java类名。如果未设置该属性,则数据源与测试方法在同一个测试类中;如果设置了类名,则作为数据源的方法必须是所在Java类的静态方法(即static);
- dependsOnGroups,被修饰方法所依赖的组列表;
- dependsOnMethods,被修饰方法所依赖的其他方法的列表;
- description,对呗修饰方法的描述
- enabled,被修饰方法是否被激活;
- expectedExceptions,被修饰方法预期将抛出的异常的列表。被修饰方法在执行过程中如果未抛出任何异常或者抛出未指定异常,则测试失败;
- groups,被修饰方法所属的组(可以有多个组);
- invocationCount,被修饰方法在执行过程中的被调用次数;
- invocationTimeout,被修饰方法运行执行的最大毫秒数(每次被调用所执行的时间之和)。如果invocationCount未设置,则该值也将被忽略。
- priority,被修饰方法的优先级,值越小优先级越高;
- successPercentage,被修饰方法成功执行的百分比;
- singleThreaded,当@Test修饰测试类时才有效。如果true,则被修饰测试类中的所有测试方法都在一个线程中执行,而不管在testng.xml中的<suite>为parallel属性设置了什么值。
- timeOut,被修饰方法运行执行的最大毫秒数;
- threadPoolSize,被修饰方法的线程池大小,被修饰方法将多线程执行。如果invocationCount未设置,则该值也将被忽略。