如果类中禁用了测试,则不会调用TestNg @afterclass

时间:2011-10-21 11:45:25

标签: java selenium webdriver testng

我正在使用testng + webdriver进行自动化测试。并且有一个问题,即@AfterClass注释不能像我预期的那样工作。

我有以下测试类:

    public class WorkspaceTest{
        @BeforeClass
        public void init(){
            //Initialization steps
        }

        @Test
        public void testMethod1{...}

        @Test
        public void testMethod2{...}

        @Test(enabled=false)
        public void testMethod3{...}

        @AfterClass(alwaysRun=true)
        public void tearDown{
            //finalizing steps 
        }

}

如果启用了所有测试方法 - tearDown方法正常, 但是如果其中一个测试被禁用 - 我甚至没有达到tearDown方法的断点。

@AfterClass注释的预期行为是什么?或者我做错了什么?

Testng version: 6.1.1
Webdriver 2.5.0
Java 1.6.0_26

2 个答案:

答案 0 :(得分:1)

它对我有用:

tearDown
PASSED: testMethod1
PASSED: testMethod2

===============================================
    Test1
    Tests run: 2, Failures: 0, Skips: 0
===============================================

以下是我使用的来源:

public class A {
      @BeforeClass
      public void init(){
          //Initialization steps
      }

      @Test
      public void testMethod1() {}

      @Test
      public void testMethod2() {}

      @Test(enabled=false)
      public void testMethod3() {}

      @AfterClass(alwaysRun=true)
      public void tearDown() {
        System.out.println("tearDown");
      }

}

答案 1 :(得分:-1)

如果使用标准junit @AfterClass应在public static void方法上注释,例如:

@AfterClass
public static void logout() {}