2

失敗したテスト (最大 5 回の試行) を再起動するために、TestNG で IRetryAnalyzer クラスを使用しています。現在、テストを実行し、合格する前に 3 回失敗すると、次のように表示されます。

テストの実行: 4、失敗: 3、エラー 0、スキップ 0。

結果を表示したいのは次のとおりです。

テストの実行: 1、失敗: 0、エラー 0、スキップ 0。

基本的に、5回の再実行すべてに失敗しない限り、失敗としてカウントしたくありません。どうすればいいですか?

4

2 に答える 2

0

私はこれをやったばかりで、どのようにやったかというと、前回までのすべてが成功したと考えていました。3回の再実行を許可するためにこれを行いました。使用したコードは次のとおりです。

import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.Reporter;

public class RetryAnalyzer implements IRetryAnalyzer {
  private int count = 0;
  private int maxCount = 2;

  @Override
  public boolean retry(ITestResult result) {
    if (!result.isSuccess()) {
      if (count < maxCount) {
        count++;
        result.setStatus(ITestResult.SUCCESS);
        String message = Thread.currentThread().getName() + ": Error in " + result.getName() + " Retrying "
            + (maxCount + 1 - count) + " more times";
        System.out.println(message);
        Reporter.log(message);
        return true;
      } else {
        result.setStatus(ITestResult.FAILURE);
      }
    }
    return false;
  }
}

ここでの鍵は、まだ再試行しているときに、結果を成功に設定することでした

result.setStatus(ITestResult.SUCCESS)

試行が行われ、それでも失敗する場合は、失敗に設定します

result.setStatus(ITestResult.FAILURE);
于 2013-07-23T22:26:37.773 に答える
0

誰も答えなかったので、試してみます。

問題の解決策を探していたときに、あなたの投稿を読んだときのランダムな考えでした...

@AfterTestメソッドでテストの結果を取得できますITestResult result

@AfterMethod
public void AfterMethod_CheckForFailure(ITestResult result, Method m)

anは、アノテーション付き@AfterMethodのメソッドが終了したときに呼び出されます。メンバーを持つクラス@Testから現在の反復を読み取ることができ、その場合は使用しますstaticstatic<5

result.setStatus(ITestResult.SUCCESS); // or what ever status you want
setCurrentTestResult(result);

それがうまくいくかどうかはわかりませんが、私にはうまくいくように見えます:)頑張ってください

于 2012-08-28T17:07:08.673 に答える