失敗したテスト (最大 5 回の試行) を再起動するために、TestNG で IRetryAnalyzer クラスを使用しています。現在、テストを実行し、合格する前に 3 回失敗すると、次のように表示されます。
テストの実行: 4、失敗: 3、エラー 0、スキップ 0。
結果を表示したいのは次のとおりです。
テストの実行: 1、失敗: 0、エラー 0、スキップ 0。
基本的に、5回の再実行すべてに失敗しない限り、失敗としてカウントしたくありません。どうすればいいですか?
失敗したテスト (最大 5 回の試行) を再起動するために、TestNG で IRetryAnalyzer クラスを使用しています。現在、テストを実行し、合格する前に 3 回失敗すると、次のように表示されます。
テストの実行: 4、失敗: 3、エラー 0、スキップ 0。
結果を表示したいのは次のとおりです。
テストの実行: 1、失敗: 0、エラー 0、スキップ 0。
基本的に、5回の再実行すべてに失敗しない限り、失敗としてカウントしたくありません。どうすればいいですか?
私はこれをやったばかりで、どのようにやったかというと、前回までのすべてが成功したと考えていました。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);
誰も答えなかったので、試してみます。
問題の解決策を探していたときに、あなたの投稿を読んだときのランダムな考えでした...
@AfterTest
メソッドでテストの結果を取得できますITestResult result
@AfterMethod
public void AfterMethod_CheckForFailure(ITestResult result, Method m)
anは、アノテーション付き@AfterMethod
のメソッドが終了したときに呼び出されます。メンバーを持つクラス@Test
から現在の反復を読み取ることができ、その場合は使用しますstatic
static
<5
result.setStatus(ITestResult.SUCCESS); // or what ever status you want
setCurrentTestResult(result);
それがうまくいくかどうかはわかりませんが、私にはうまくいくように見えます:)頑張ってください