2012-01-03 40 views
5

我使用Selenium webdriver,在Java中用TestNG運行X個測試用例。在TestNG/Selenium中自動重新啓動失敗的測試用例

我想要的是,任何測試用例都會在失敗時自動重新啓動(無論是從開始還是從失敗點開始)。

我知道TestNG的框架有以下方法

@Override 
    public void onTestFailure(ITestResult tr) { 
    log("F"); 
    } 

,但我不知道如何找出哪些測試用例是,然後我將如何重新啓動它。

回答

9

,我想看看在它實際的代碼示例,並在這裏找到: Restarting Test immediately with TestNg

觀察一下下面的測試,每個人都可以重新運行一次,一旦發生故障。

import org.testng.Assert; 
import org.testng.IRetryAnalyzer; 
import org.testng.ITestResult; 
import org.testng.annotations.Test; 

public class Retry implements IRetryAnalyzer { 
    private int retryCount = 0; 
    private int maxRetryCount = 1; 

    public boolean retry(ITestResult result) { 

     if (retryCount < maxRetryCount) { 
      retryCount++; 
      return true; 
     } 
     return false; 
    } 

    @Test(retryAnalyzer = Retry.class) 
    public void testGenX() { 
     Assert.assertEquals("james", "JamesFail"); // ListenerTest fails 
    } 

    @Test(retryAnalyzer = Retry.class) 
    public void testGenY() { 
     Assert.assertEquals("hello", "World"); // ListenerTest fails 

    } 
} 
5

從testng.org

每次測試在一套房失敗,TestNG中創建一個名爲TestNG的-failed.xml在輸出目錄中的文件。這個XML文件包含重新運行失敗的這些方法的必要信息,使您無需運行整個測試即可快速重現失敗。

如果你想在失敗後重新運行測試,你需要調用失敗的方法。您可以從ITestResult對象獲取該方法名稱。

如果您想一起重新運行所有失敗的測試用例,那麼可以在第一次執行後將testng-failed.xml作爲輸入xml。

+0

我想像他們失敗一樣運行它們。好的,我有失敗的測試和它的名字,我將如何重新開始測試? – MostWanted 2012-01-04 09:43:35

+0

沒關係..我明白了.. [乾杯](http://testng.org/doc/documentation-main.html#running-testng-programmatically) – MostWanted 2012-01-04 15:21:51

+0

@WaqasKhan ...請發表解決方案,如果你有一個。我知道這仍然是一個老問題... – Sighil 2015-07-07 18:57:52