Java TestNG注释顺序
我有一个关于TestNG注释操作顺序的问题。。。我有以下代码:Java TestNG注释顺序,java,testng,Java,Testng,我有一个关于TestNG注释操作顺序的问题。。。我有以下代码: public class AnnotationsTest { @BeforeSuite(alwaysRun = true) public static void beforeSuite() { System.out.println("@BeforeSuite"); } @BeforeClass(alwaysRun = true) public static void bef
public class AnnotationsTest {
@BeforeSuite(alwaysRun = true)
public static void beforeSuite() {
System.out.println("@BeforeSuite");
}
@BeforeClass(alwaysRun = true)
public static void beforeClass() {
System.out.println("@BeforeClass");
}
@BeforeTest(alwaysRun = true)
public static void beforeTest() {
System.out.println("@BeforeTest");
}
@BeforeMethod(alwaysRun = true)
public static void beforeMethod() {
System.out.println("@BeforeMethod");
}
@AfterSuite(alwaysRun = true)
public static void afterSuite() {
System.out.println("@AfterSuite");
}
@AfterClass(alwaysRun = true)
public static void afterClass() {
System.out.println("@AfterClass");
}
@AfterTest(alwaysRun = true)
public static void afterTest() {
System.out.println("@AfterTest");
}
@AfterMethod(alwaysRun = true)
public static void afterMethod() {
System.out.println("@AfterMethod");
}
@Test
public void test() {
System.out.println("Test");
}
@Test
public void test2() {
System.out.println("Test2");
}
}
我的输出如下:
我的问题是,为什么@AfterTest方法不在每个@Test注释之后运行?TestNG是否将整个类视为“测试”?看起来是这样的,因为@BeforeTest和@AfterTest在@BeforeClass和@AfterClass之外,但我想确定我是否理解。我假设我可以在这个例子中使用@BeforeMethod和@AfterMethod在这个类中的test1和test2之前和之后执行。谢谢
我的问题是,为什么每次@Test之后都不运行@postertest方法
注释
正如上面所说的
@后测试:所有测试完成后将运行带注释的方法
属于标记内类的方法已运行
及
@BeforeTest:带注释的方法将在任何测试方法之前运行
属于标记内的类的
这里的主要混淆是@Test注释和标记。考虑您正在从TestNg.xml文件执行上面的代码。我们在该文件中编写testng文件标记序列的方式是方法。所以现在每个注释都有意义了。i、 e.@Test用于该类中的方法@BeforeMethod将在每个@Test注释之前执行。和@BeforeTest注释在testng.xml文件中提到的类之前执行,正如您可以看到标记封闭标记一样。上述问题的简称是@Test用于menthod@beforethod在每个@Test注释的方法之前执行,而@BeforeTest在标记中提到的所有方法和类之前执行。
@AfterMethod
是在@Test
方法之后执行的方法。类似地,@beforethod
是在每个@Test
方法之前执行的方法
您的输出显示了正在运行的方法的优先级。关于“BeforeTest”的文档不正确,然后。。。如我的输出所示,“BeforeTest”在第一个测试方法之前运行,而不是任何测试方法。谢谢你的回答。
@BeforeTest
方法只运行一次,如果你想在每个测试用例之前运行一些方法,你可以使用@beforethod