2017-08-03 65 views
0

考慮以下TestNG的套房:TestNG的高達6.10忽略後續類在一套如果@BeforeMethod失敗

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name = "TestNG Examples" parallel = "false" thread-count = "1"> 
    <test name = "TestNG Examples"> 
     <classes> 
      <class name = "com.example.A"/> 
      <class name = "com.example.B"/> 
     </classes> 
    </test> 
</suite> 

由這些類:

package com.example; 

import org.testng.annotations.BeforeMethod; 
import org.testng.annotations.Test; 

public final class A extends AbstractTest { 
    @BeforeMethod 
    public void setUp() { 
     throw new RuntimeException(); 
    } 

    @Test 
    public void test() { 
    } 
} 

package com.example; 

import org.testng.annotations.Test; 

public final class B extends AbstractTest { 
    @Test 
    public void test() { 
     System.out.println("B.test()"); 
    } 
} 

請注意,B.test()在012之後執行,和兩個類有共同的超類:

package com.example; 

import org.testng.annotations.AfterMethod; 

public abstract class AbstractTest { 
    @AfterMethod 
    public final void tearDown() { 
    } 
} 

現在,如果@BeforeMethod鉤在A由於某種原因失敗(如在上面的例子),延長了相同的超類(AbstractTest)隨後套件類是從不運行:

TestNG Eclipse plug-in

這是的Eclipse的截圖,但我觀察的IntelliJ IDEA相同的行爲TeamCity也是如此。

  • 這兩項測試應該有一個共同的祖先:

    以下前提條件必須以重現此問題得到滿足。

  • 共同的祖先應該有一個@AfterMethod掛鉤。
  • 正在運行的第一個測試課程應該有一個失敗的@BeforeMethod掛鉤。

這是預期的行爲? 是否在任何地方記錄?

+0

我確認問題。你可以在https://github.com/cbeust/testng/issues/上打開一張票嗎? – juherr

+0

這是什麼版本的TestNG?我試過使用6.11,我似乎無法重現該問題。 @juherr你嘗試了什麼版本? –

+0

@KrishnanMahadevan我使用主分支但還沒有up2date。我只用套件文件重現了這個問題。 – juherr

回答

2

檢查alwaysRun在這裏http://testng.org/doc/documentation-main.html

如果我們想運行方法,即使依賴方法失敗,然後使用alwaysRun = true

+2

只適用於_TestNG_ ** 6.10 **及以下版本。 _TestNG_ ** 6。11 **不受此問題影響。 – Bass