bugfix> testng > 投稿

testngを使用してスイートの実行に失敗したテストケースのリストを特定する方法を教えてください。失敗したテストケースを自動的に再実行する必要があります。

前もって感謝します!

回答 1 件
  • 実行の一部として、testngは testng-failed.xml というファイルを生成します  失敗したメソッドのすべての詳細が含まれます。失敗したテストの再実行を探している場合は、このファイルを見つけることができます(mavenプロジェクトでは target の下にあります  フォルダ。

    次のことができます(mavenを使用していると仮定します)。

    Mavenプロパティを介してsurefireプラグインのスイート名を受け入れます。

    surefireプラグインを変更して、スイート名のmavenプロパティを参照します。

    次のことを行うシェルスクリプトまたはバッチファイルを作成します。

    ファイル testng-failed.xml かどうかを確認します  ターゲットフォルダに存在します。

    見つかったら、再実行できます。

    surefireレポートフォルダーを別の場所にバックアップしてください。これは、実行しないと古いレポートが上書きされるためです。

    testng-failed.xml を渡してテストを再実行します  surefireプラグインで使用されているMavenプロパティの場所。

    それでいいはずです。

    他のオプションは、基本的に org.testng.IRetryAnalyzer の実装を構築することです  そしてそれをあなたの @Test と結び付けます  方法。これにより、TestNGは @Test の呼び出しを試行します  失敗した場合、 IRetryAnalyzer までもう一度メソッド  実装は false を返します  TestNGがこれ以上試行しないことを示します。

    ここにサンプルがあります

    public class MyRetry implements IRetryAnalyzer {
      private int retryCount=0;
      private int maxRetryCount=1;
      @Override
      public boolean retry(ITestResult result) {
        if (retryCount < maxRetryCount) {
          retryCount++;
          return true;
        }
        return false;
      }
    }
    
    

    public class GitHub1241Sample {
      @Test(retryAnalyzer = MyRetry.class)
      public void test2() {
        Assert.fail();
      }
    }
    
    

    再試行アナライザーを使用する場合、レポートなどのバックアップを取る必要はありません。

あなたの答え