当前位置: 首页 > 知识库问答 >
问题:

TestNG中BeforeClass与BeforeTest的区别

从智明
2023-03-14

我们从官方的TestNG文档中了解到:

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

@beforetest:将在运行属于 标记中的类的任何测试方法之前运行带注释的方法。

共有1个答案

澹台岳
2023-03-14

SeleniumAbstractTest.class

public abstract class SeleniumAbstractTest {

  @BeforeSuite
  public void beforeSuite() {
    System.out.println("BeforeSuite");
  }

  @BeforeTest
  public void beforeTest() {
    System.out.println("BeforeTest");
  }

  @BeforeClass
  public void beforeClass() {
    System.out.println("BeforeClass");
  }

  @BeforeMethod
  public void beforeMethod() {
    System.out.println("BeforeMethod");
  }

  @AfterMethod
  public void afterMethod() {
    System.out.println("AfterMethod");
  }

  @AfterClass
  public void afterClass() {
    System.out.println("AfterClass");
  }

  @AfterTest
  public void afterTest() {
    System.out.println("AfterTest");
  }

  @AfterSuite
  public void afterSuite() {
    System.out.println("AfterSuite");
  }

}

MyTestClass1.Class

public class MyTestClass1 extends SeleniumAbstractTest {

  @Test
  public void myTestMethod1() {
    System.out.println("myTestMethod1");
  }

  @Test
  public void myTestMethod2() {
    System.out.println("myTestMethod2");
  }
}

MyTestClass2.Class

public class MyTestClass2 extends SeleniumAbstractTest {

  @Test
  public void myTestMethod3() {
    System.out.println("myTestMethod3");
  }

  @Test
  public void myTestMethod4() {
    System.out.println("myTestMethod4");
  }
}
<suite name="Suite">
  <test name="Test1" >
    <classes>
       <class name="MyTestClass2" />
    </classes>
  </test>

  <test name="Test2">
    <classes>
      <class name="MyTestClass1"/>
      <class name="MyTestClass2"/>
    </classes>
  </test>
</suite>
BeforeSuite
'   BeforeTest
'   '   BeforeClass
'   '   '   BeforeMethod
'   '   '   '   myTestMethod3
'   '   '   AfterMethod
'   '   '   BeforeMethod
'   '   '   '   myTestMethod4
'   '   '   AfterMethod
'   '   AfterClass
'   AfterTest
'   BeforeTest
'   '   BeforeClass
'   '   '   BeforeMethod
'   '   '   '   myTestMethod1
'   '   '   AfterMethod
'   '   '   BeforeMethod
'   '   '   '   myTestMethod2
'   '   '   AfterMethod
'   '   AfterClass
'   '   BeforeClass
'   '   '   BeforeMethod
'   '   '   '   myTestMethod3
'   '   '   AfterMethod
'   '   '   BeforeMethod
'   '   '   '   myTestMethod4
'   '   '   AfterMethod
'   '   AfterClass
'   AfterTest
AfterSuite
 类似资料:
  • 问题内容: 我们从TestNG官方文档中知道: 带注释的方法将在调用当前类中的第一个测试方法之前运行。 带注释的方法将在运行属于标签内部的类的任何测试方法之前运行。 上面的两个TestNG批注在功能上看起来都很相似。谁能解释这个独特的区别? 问题答案: SeleniumAbstractTest.class MyTestClass1.class MyTestClass2.class 如果您具有以下测

  • 我仍在学习自动化测试,并且一直在研究一些测试框架。我发现有两种方法可以帮助人们启动WebDriver。 有些人在BeforeClass中启动它(使用TestNG),它使驱动程序在整个类测试中保持活动状态,包括许多测试用例 其他组在每个测试用例@test或@BeforeTest中启动WebDriver,以便它们可以为每个类创建新的WebDriver 我们需要在哪里启动WebDriver?非常感谢。

  • 我正在尝试使用testng.xml执行testcases。我已经将所有的测试运行类放在一个测试中。在执行时,我注意到第二类(仪表板类)的@beforeTest方法首先执行。我希望执行所有类的@beforeTest方法,以与testng.xml文件中的类相同的执行顺序执行。请看下面的图片。 对于我在提到的类中使用的所有@beforeTest和@beforeClass我都使用了waysrun=true

  • 问题内容: 我正在使用Java和TestNG框架为我的公司编写一些selenium自动UI测试。我正在类中定义驱动程序,并且我想在中实际初始化驱动程序并在方法中退出它。假设它们在不同的类中,Java的实现方式是什么?我知道如何使它在同一个类中工作,但不能在单独的类中工作。这是我的文件: 现在,我想拥有一个单独的Setup类和一个Teardown类。如果我要用相同的方式定义所有这些,则可以这样进行:

  • 问题内容: 我正在使用JUnit编写一些测试用例。我需要初始化一些静态变量,这些变量将用于该类中的所有测试用例。 为此,我可以使用 静态初始化程序块或 静态方法 相互使用有什么好处? 问题答案: 或初始值设定项的语义非常不同。 静态初始化器由JVM而不是JUnit调用。如果在静态初始化程序中引发了异常,则测试框架可能无法捕获并报告该异常。此外,与该方法相比,静态初始化程序的调用时间没有明确定义。

  • 我对在TestNG中使用注释@beforeClass、afterClass、beforeSuite、afterSuite感到困惑。 接下来,afterSuite、beforeSuite和@test: 我的问题是关于语义,意思,而不是实际的代码。我读了testNG文档--没有帮助。