2011-10-21 49 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() {} 
相關問題