TestNG:@BeforeClass和@BeforeTest的优先级

时间:2016-09-16 06:01:43

标签: selenium testng

我一直在使用TestNG并遇到两个注释@BeforeTest@BeforeClass的问题。我想知道两者是否都会先应用?

3 个答案:

答案 0 :(得分:5)

回答:在使用@BeforeTest注释的方法之前,将调用使用@BeforeClass注释的方法。

参考TestNG和说明的

@Test注释执行顺序:

  1. @BeforeSuite :带注释的方法将在所有测试之前运行     这个套房已经运行。
  2. @BeforeTest :带注释的方法将在任何属于该类内部的类的测试方法之前运行  标签运行。
  3. @BeforeGroups :此组的列表 配置方法将在之前运行。保证这种方法 马上跑     在属于任何这些组的第一个测试方法之前     调用。
  4. @BeforeClass :在调用当前类中的第一个测试方法之前,将运行带注释的方法。
  5. @BeforeMethod :将在每个测试方法之前运行带注释的方法。
  6. @Test :测试方法或类
  7. @AfterMethod :每个测试方法都会运行带注释的方法。
  8. @AfterClass :在运行当前类中的所有测试方法后,将运行带注释的方法。
  9. @AfterGroups :此配置方法将在之后运行的组列表。这种方法很快就会运行 在属于任何这些组的最后一个测试方法之后 调用。
  10. @AfterTest :在标记内的类的所有测试方法都有的后,将运行带注释的方法 跑。
  11. @AfterSuite :在此套件中的所有测试运行后,将运行带注释的方法。
  12.   

    TestNG提供了各种其他注释,但不同   属性/参数的类型可以传递给这些注释。对于   有关TestNG注释follow this link

    的更多信息

答案 1 :(得分:1)

先测试然后再上课。

@BeforeTest:在运行属于<test>标记内的类的任何测试方法之前,将运行带注释的方法。

@BeforeClass:在调用当前类中的第一个测试方法之前,将运行带注释的方法。
 http://testng.org/doc/documentation-main.html#annotations

答案 2 :(得分:1)

注释执行顺序

  1. BeforeSuite
  2. BeforeTest
  3. BeforeClass
  4. BeforeMethod
  5. 测试
  6. AfterGroups
  7. 课余
  8. AfterTest
  9. 您可以使用伪代码检查:

    public class TestAnnotationsPriorityOrder {
    
    public int i=0;
    
    
    @BeforeSuite
    public void beforeSuite(){
        i++;
        System.out.println(i+"::BeforeSuite");
    }
    
    @AfterSuite
    public void afterSuite(){
        i++;
        System.out.println(i+"::AfterSuite");
    }
    
    @BeforeTest
    public void beforeTest(){
        i++;
        System.out.println(i+"::BeforeTest");
    }
    
    @AfterTest
    public void afterTest(){
        i++;
        System.out.println(i+"::AfterTest");
    }
    
    
    @BeforeGroups
    public void beforeGroups(){
        i++;
        System.out.println(i+"::BeforeGroups");
    }
    
    @AfterGroups
    public void afterGroups(){
        i++;
        System.out.println(i+"::AfterGroups");
    }
    
    
    @BeforeClass
    public void beforeClass(){
        i++;
        System.out.println(i+"::BeforeClass");
    }
    
    @AfterClass
    public void afterClass(){
        i++;
        System.out.println(i+"::AfterClass");
    }
    
    
    @BeforeMethod
    public void beforeMethod(){
        i++;
        System.out.println(i+"::BeforeMethod");
    }
    
    @AfterMethod
    public void afterMethod(){
        i++;
        System.out.println(i+"::AfterGroups");
    }
    
    
    @Test
    public void TestMethod(){
        i++;
        System.out.println(i+"::Test");
    }
    
    
    }