2012-01-03 11 views
5

TestNGでJavaでSelenium webdriverを使用して、X個のテストケースを実行しています。TestNG/Seleniumで自動的に失敗したテストケースを再起動

私が望むのは、テストケースが失敗するとすぐに自動的に(起動時または障害時のいずれかから)再起動することです。

私はTestNGのフレームワークは、以下の方法

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

を持って知っているが、私はそれは私がそれを再起動する方法を次いとのTestCaseかを調べる方法がわかりません。 testng.orgから

答えて

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のは、出力ディレクトリ内のTestNG-failed.xmlというファイルを作成します。このXMLファイルには、失敗したこれらのメソッドだけを再実行するのに必要な情報が含まれているため、テスト全体を実行することなく迅速に障害を再現できます。

失敗後にテストを正確に再実行するには、失敗したメソッドを呼び出す必要があります。 ITestResultオブジェクトからそのメソッド名を取得できます。

すべての失敗したテストケースを一緒に再実行したい場合は、最初の実行後にtestng-failed.xmlを入力xmlとして与えることができます。

+0

私はそれらが失敗したのと同じように実行したいと思います。さて、私は失敗したテストとその名前を持っているので、どのようにテストを再開しますか? – MostWanted

+0

決して...私はそれを持っている.. [歓声](http://testng.org/doc/documentation-main.html#running-testng-programmatically) – MostWanted

+0

@WaqasKhan ...親切にソリューションを投稿する。私はそれがまだ古い質問であることを知っています... – Sighil

関連する問題