maven - Maven+Surefire+Testng的顺序 - BeforeClass, BeforeTest, Test, Test, AfterTest, AfterClass

标签 maven testng surefire

我期望以下输出:

Running TestSuite
[DEBUG] beforeClass
[DEBUG] beforeTest
[DEBUG] test
[DEBUG] afterTest
[DEBUG] beforeTest
[DEBUG] test
[DEBUG] afterTest
[DEBUG] afterClass

但相反,这确实发生了。注意 2 个问题: BeforeClass 在 BeforeTest 之后运行。其次,Before/AfterTest 运行一次。
Running TestSuite
[DEBUG] beforeTest
[DEBUG] beforeClass
[DEBUG] test
[DEBUG] test
[DEBUG] afterClass
[DEBUG] afterTest

这是代码。
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class TestNgAnnoTest {
   @BeforeClass
   public void beforeClass(){
      System.out.println("beforeClass");
   }
   @BeforeTest
   public void beforeTest(){
      System.out.println("beforeTest");
   }
   @Test
   public void test1(){
      System.out.println("test");
   }
   @Test
   public void test2(){
      System.out.println("test");
   }
   @AfterTest
   public void afterTest(){
      System.out.println("afterTest");

   }
   @AfterClass
   public void afterClass(){
      System.out.println("afterClass");
   }
}

对于任何对工具版本感到好奇的人:
java macosx/1.6.0_22,mvn:2.2.1,surefire 2.6,testng 5.14.2

最佳答案

愚蠢的我。将 After/BeforeTest 与 After/BeforeMethod 混淆。

[DEBUG] beforeClass
[DEBUG] beforeMethod
[DEBUG] test
[DEBUG] afterMethod
[DEBUG] beforeMethod
[DEBUG] test
[DEBUG] afterMethod
[DEBUG] afterClass

替换 After/BeforeTest 产生了正确的 exec 顺序。
    @BeforeClass
    public static void beforeClass(){
        log.debug("beforeClass");
    }

    @BeforeMethod
    public void beforeMethod(){
        log.debug("beforeMethod");
    }

    @Test
    public void test1(){
        log.debug("test");
    }

    @Test
    public void test2(){
        log.debug("test");
    }

    @AfterMethod
    public void afterMethod(){
        log.debug("afterMethod");

    }

    @AfterClass
    public void afterClass(){
        log.debug("afterClass");
    }

关于maven - Maven+Surefire+Testng的顺序 - BeforeClass, BeforeTest, Test, Test, AfterTest, AfterClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4286801/

相关文章:

Maven 'versions' 插件,版本号顺序

java - 如何使用 phantomjs 将多个 web 元素传递到页面

java - 使用 Intellij IDEA 构建项目时 Maven Surefire 插件 "error in starting fork"

java - Hibernate3 Maven 插件错误 : Could not create or find "MyReverseStrategy.java" with one argument delegate constructor?

java - 无法解析项目的依赖关系。找不到 Artifact 。

java - 商业Web应用平台架构

java - @AfterMethod 和 ITestListener#onFailure 的 TestNG 调用顺序

java - 从 JUnit 4 转换到 TestNG。如何处理参数?

java - 多模块项目的 Maven 报告和站点生成

java - Maven Surefire 测试中的 ClassNotFoundExceptions