问题描述
我们从TestNG官方文档中了解到
As we know from official TestNG documentation:
@BeforeClass:
带注释的方法将在调用当前类中的第一个测试方法之前运行.
@BeforeClass:
The annotated method will be run before the first test method in the current class is invoked.
@BeforeTest:
带注释的方法将在运行属于<test>
标记内的类的任何测试方法之前运行.
@BeforeTest:
The annotated method will be run before any test method belonging to the classes inside the <test>
tag is run.
以上两个TestNG注释在功能上都相似.谁能解释这个独特的区别?
Both the above TestNG annotations look similar in functionality. Can anyone explain the unique difference?
推荐答案
SeleniumAbstractTest.class
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
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
MyTestClass2.class
public class MyTestClass2 extends SeleniumAbstractTest {
@Test
public void myTestMethod3() {
System.out.println("myTestMethod3");
}
@Test
public void myTestMethod4() {
System.out.println("myTestMethod4");
}
}
如果您具有以下测试套件...
If you have the following Test Suite...
<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>
...,则输出[缩进以便于阅读]
... then the output [indented for easy reading] will be
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中的BeforeClass和BeforeTest之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!