2014-01-16 64 views
0

我使用TestNG的運行,其中包含有關20個測試類的包,我的XML文件是這樣的TestNG的逃課一旦一個測試類失敗

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="PageTest" parallel="classes" thread-count="5"> 
    <packages> 
     <package name="testpagename"/>   
    </packages> 
</test>  
</suite> 

和我的測試類被定義爲

public class testdemo { 
    @BeforeClass  
    public void setUpClass(){  

    } 
    @AfterClass 
    public void afterClass(){ 
    } 

    @Test 
    public void testMethod1(){ 
    } 

    @Test(dependsOnMethods = {"testMethod1"}) 
    public void testMethod2(){ 
    } 

} 

在測試運行時,出於某種原因,其中一個測試類由於意外的異常而失敗,我期望以下測試類保持運行,直到所有類都執行完畢。但事實上,其餘的課程因爲失敗而被忽略,任何人都可以告訴我如何解決這個問題?

感謝

+0

所有的類都不會被跳過,只有從屬方法應該被跳過。這個類和其他類之間是否存在關係,還是那些完全獨立的類? –

回答

0

放入try塊和使用catch塊完整的代碼,使其通過斷言語句失敗。所以下一個TestNG方法不會受到以前失敗的影響。

@Test 
Public void method1(){ 
try{ 
// Here will ur code which may cause exception 
} 
Catch(Exception e){ 
    Assert.fail(" "); 
} 
} 
@Test 
Public void method2{ 
// implement in same way as method 1 

} 
0

我想所有以下的類將被跳過的情況下@方法失敗之前。嘗試在套件定義中使用configfailurepolicy =「continue」屬性。

+0

嗨,是的,我認爲你是對的。但是一旦我將configfailurepolicy =「continue」添加到套件定義中,一旦@beforeclass annonation失敗,它只會在子類中運行沒有依賴關係的測試,是否值得期待? – user3204645

+0

@ user3204645請重新說明問題。什麼是沒有依賴性的測試?什麼是兒童課程?某種例子會對你有所幫助... – user1058106

0

據TestNG的文檔,我們可以通過兩種方式創建依賴於規定:

1.Hard依賴。你所依賴的所有方法必須已經運行併成功運行。如果您的依賴關係中至少發生一次故障,則不會在報告中調用並標記爲SKIP。

2. 軟依賴關係。這是你要求的。即使其中一些失敗,您仍將始終依靠您所依賴的方法運行。當你只是想確保你的測試方法按照一定的順序運行,但是他們的成功並不取決於其他人的成功時,這很有用。通過在@Test註釋中添加「alwaysRun = true」來獲得軟依賴關係。

@Test(dependsOnMethods = {"testMethod1"},alwaysRun=true) 
public void testMethod2(){ 
} 
相關問題