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

TestNG注释顺序

白越
2023-03-14

我对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是否将整个类视为“Test”?似乎是这样,因为@BeforeTest和@AfterTest在@BeforeClass和@AfterClass之外,但我想确保我理解。我假设我可以在这种情况下使用@BeforeMethod和@AfterMethod在这个类的test1和test2之前和之后执行。谢谢!

共有3个答案

赵征
2023-03-14

@AfterMethod是在@Test方法之后执行的方法。类似地,@BeforeMethod是在每个@Test方法之前执行的方法。

您的输出显示正在运行的方法的优先级。

罗昕
2023-03-14

这里的主要混淆是@测试注释和标记。假设您正在执行testng中的上述代码。xml文件。我们在该文件中编写testng文件标记序列的方式是方法。所以现在每个注释都有意义了。i、 e.@测试用于该类中的方法@BeforeMethod将在每个@测试注释之前执行。和@BeforeTest注释在testng中提到的类之前执行。xml文件,如您所见,标记包含标记。上述问题的缩写是@Test用于menthod@beforethod在每个@Test注释的方法之前执行,而@BeforeTest在标记中提到的所有方法和类之前执行。

党博超
2023-03-14

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

正如文件所说

@AfterTest:带注释的方法将在属于内部类的所有测试方法之后运行

@BeforeTest:带注释的方法将在属于

 类似资料:
  • 问题内容: 我正在尝试在Java项目上运行Dagger 2和Lombok。当然,龙目岛必须首先运行,但是它的确存在取决于机会。起初,我怀疑我可以通过类路径中库jar的相应位置来指定顺序,但是该顺序显然被忽略了。 有没有办法指定它们以某种方式运行的顺序,还是我必须忍受不能合并两个AP的情况? 我制作了一个SSCCE测试用例。 一个简单的&就足以说明问题- 如果在App.java中注释第18行和取消注

  • 我正在尝试在我的Java项目中运行Dagger2和Lombok。当然,龙目岛必须先跑,但它是否真的跑了,似乎要看机会。起初,我怀疑我可以通过库jar在类路径中各自的位置来指定顺序,但这个顺序显然被忽略了。 有没有一种方法可以指定它们运行的顺序,或者我只能忍受不能组合两个AP? 我已经生成了一个SSCCE测试用例。 一个简单的&就足以说明这个问题--如果您在app.java中注释第18行而取消注释第

  • 我将TestNG与Selenium WebDriver一起使用。我正在尝试让“dataprovider”注释在我的Eclipse IDE中工作。但是,在添加下面的注释之后,Eclipse会显示以下错误: 错误: 多谢了。

  • 是否可以从TestNG中按时间顺序获得? 我的测试类和方法都显示得乱七八糟。 我知道按时间顺序排序,但我也希望emailable-report.html中有一个按时间顺序排列的视图

  • 问题内容: 什么时候在方法开始时使用块注释,什么时候使用Javadoc风格的注释? 在Java样式指南的“注释”部分中,我发现了这一点: Java程序可以有两种注释:实现注释和文档注释。实现注释是在C ++中发现的,由,和// 分隔。文档注释(称为“文档注释”)仅适用于Java,并以分隔。可以使用javadoc工具将Doc注释提取到HTML文件中。 实现注释用于注释掉代码或有关特定实现的注释。Do

  • 我将TestNG添加到我的pom.xml中,然后它就被导入了。我可以使用TestNG注释,但是当我试图设置优先级时,它无法识别它。我是不是漏掉了什么?以下是我正在使用的Intellij版本: IntelliJ IDEA 2020.2(社区版) 构建#ic-202.6397.94,构建于2020年7月27日 运行时版本:11.0.7+10-b944.20 amd64 VM:OpenJDK 64位服务