Selenium TestNG:@BeforeClass和@BeforeTest的优先级

Selenium TestNG:@BeforeClass和@BeforeTest的优先级,selenium,testng,Selenium,Testng,我一直在使用TestNG,但在两个注释方面存在问题,@BeforeTest和@BeforeClass。我想知道这两种方法是否都适用,哪一种先运行?先测试,然后上课 @BeforeTest:在运行属于标记内类的任何测试方法之前,将运行带注释的方法 @BeforeClass:带注释的方法将在调用当前类中的第一个测试方法之前运行。 注释执行顺序: 套房前 试验前 课前 预处理法 试验 后组 下课 事后 您可以使用伪代码进行检查: public class TestAnnotationsPriority

我一直在使用TestNG,但在两个注释方面存在问题,
@BeforeTest
@BeforeClass
。我想知道这两种方法是否都适用,哪一种先运行?

先测试,然后上课

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

@BeforeClass
:带注释的方法将在调用当前类中的第一个测试方法之前运行。

注释执行顺序

  • 套房前
  • 试验前
  • 课前
  • 预处理法
  • 试验
  • 后组
  • 下课
  • 事后
  • 您可以使用伪代码进行检查:

    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");
    }
    
    
    }
    

    Answer:使用
    @BeforeTest
    注释的方法将在使用
    @BeforeClass
    注释的方法之前被调用

    TestNG
    注释参考
    @Test
    和说明的执行顺序

  • @BeforeSuite:带注释的方法将在中的所有测试之前运行 这套房已经开张了
  • @BeforeTest:带注释的方法将在属于类的任何测试方法之前运行 标记已运行
  • @BeforeGroups:此 配置方法将在之前运行。这种方法保证了 快跑 在使用属于这些组中任何一组的第一种试验方法之前 调用
  • @BeforeClass:带注释的方法将在调用当前类中的第一个测试方法之前运行
  • @beforethod:带注释的方法将在每个测试方法之前运行
  • @Test:测试方法或类别
  • @AfterMethod:注释方法将在每个测试方法之后运行
  • @AfterClass:在运行当前类中的所有测试方法之后,将运行带注释的方法
  • @AfterGroups:此配置方法将运行的组列表。此方法保证短期内运行 属于这些组中任何一组的最后一种试验方法完成后 调用
  • @postertest:注释的方法将在属于标记内类的所有测试方法完成后运行 跑
  • @AfterSuite:此套件中的所有测试运行完毕后,将运行带注释的方法
  • TestNG
    还提供了各种其他注释和不同的注释 属性/参数的类型可以传递给这些注释。对于 有关
    TestNG
    注释的更多信息


    好的,那么课后和考试后呢?先执行测试之后?是的。检查这些代码片段,您就可以了解其中的含义:第1行到第45行抽象类,第45-76行,两个类,每个类有2个test,以及从第76行到第94行的testng.xml。最后是控制台输出。我读错了,检查更新的答案和片段。@Adam Grunt如果你觉得这个答案澄清了你的疑问,那么你可以接受它,这样它也可以帮助其他人轻松找到最佳答案。