TestNG Annotations命令

zmo*_*ris 5 java testng

我对TestNG注释的操作顺序有疑问......我有以下代码:

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

我的输出如下:

在此输入图像描述

我的问题是,为什么@AfterTest方法在每个@Test注释后都没有运行?TestNG会将整个班级视为"测试"吗?似乎是这种情况,因为@BeforeTest和@AfterTest不在@BeforeClass和@AfterClass之内,但我想确定我理解.我假设我可以在这种情况下使用@BeforeMethod和@AfterMethod在此类中的test1和test2之前和之后执行.谢谢!

Nee*_*ain 4

我的问题是,为什么 @AfterTest 方法不在每个 @Test 注释之后运行?

正如文档所说

@AfterTest:被注解的方法将在属于<test>标签内的类的所有测试方法运行完毕后运行。

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

  • `@BeforeTest` 方法只运行一次,如果你想在每个测试用例之前运行某个方法,你可以使用 `@BeforeMethod` (4认同)