Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TestNG注释顺序_Java_Testng - Fatal编程技术网

Java 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

我有一个关于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");
    }
}
我的输出如下:

我的问题是,为什么@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