2011-10-21 16 views
1

我正在使用testng + webdriver进行自动测试。并有一个问题,@AfterClass注释不符合我的预期。如果在某个类中禁用了测试,则不会调用TestNg @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方法。

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

Testng version: 6.1.1 
Webdriver 2.5.0 
Java 1.6.0_26 
+0

我遇到了同样的错误当我在IntelliJ中运行TestNG测试时,当我通过Gradle运行测试时,它正确地调用了@ @ AfterClass(即使当一个方法被启用= false时)。 – checketts

回答

1

它为我的作品:

tearDown 
PASSED: testMethod1 
PASSED: testMethod2 

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

这里是我使用的源:如果您在使用标准的JUnit @AfterClass

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"); 
     } 

} 
+0

感谢您的时间!看起来像我本地化的问题。 Eclipse testng插件存在一些问题。相同的测试在IntelliJIdea上工作正常 – GentleMurderer

+0

您能否通过电子邮件发送您的测试结果的testng用户列表?很高兴看看它是否是TestNG Eclipse插件的问题。 –

0

应该在公共静态无效的方法进行注释,为例如:

@AfterClass 
public static void logout() {} 
相关问题