私はdataproviderメソッドとテストメソッド(テストメソッドでITestContextパラメータを使用)を使用しています。次のように簡略化した例である。テストメソッドでITestContextを使用してTestNGを使用してテストケースを再試行する
@DataProvider(name="Dataprovider")
public Object[][] dataprovider(){
return new Object[][]{{1},{2,},{3}};
}
@Test(dataProvider="Dataprovider")
public void test(int data, ITestContext itx){
System.out.println(data);
org.testng.Assert.assertEquals(data, 3);
}
マイリトライクラスとRetryListenerクラスは以下の通りである:テストが失敗した場合、リトライはTestNGのによって呼び出され、その後:期待
public class RetryListener implements IAnnotationTransformer {
@Override
public void transform(ITestAnnotation testannotation, Class testClass,
Constructor testConstructor, Method testMethod) {
IRetryAnalyzer retry = testannotation.getRetryAnalyzer();
if (retry == null) {
testannotation.setRetryAnalyzer(Retry.class);
}
}
}
public class Retry implements IRetryAnalyzer {
private static int retryCount = 0;
private int maxRetryCount = 1;
// Below method returns 'true' if the test method has to be retried else 'false'
//and it takes the 'Result' as parameter of the test method that just ran
public boolean retry(ITestResult result) {
if (retryCount < maxRetryCount) {
System.out.println("Retrying test " + result.getName() + " with status "
+ getResultStatusName(result.getStatus()) + " for the " + (retryCount+1) + " time(s).");
retryCount++;
return true;
}
retryCount = 0;
return false;
}
public String getResultStatusName(int status) {
String resultName = null;
if(status==1)
resultName = "SUCCESS";
if(status==2)
resultName = "FAILURE";
if(status==3)
resultName = "SKIP";
return resultName;
}
}
dataproviderは、同じ値をテストメソッドに返す必要があります。
観測:DataProviderに同じ値を返しますが、テストメソッドが実行されず、再試行が終了し、次のテストを開始するには
(新しい値は現在のdataProviderによって返されます)しかし、私の再試行は、試験方法に入りません(テストメソッドの(int data、ITestContext itx)は期待していません。 ITestContextを削除すると、再試行が行われます。
ITestContextは、テストケースのコンテキストを維持するために必要です。 ITestContextをテストメソッドに保持して再試行する方法。
だ(あなたが気付いた場合、私は今、明示的にも、データプロバイダを経由して
ITestContext
に渡しています)あなたのために働くだろうかどうかを確認してください私の再試行はテスト方法には入っていません " - >それはどういう意味ですか? – juherr再試行が呼び出されると、データプロバイダは同じ値で再度呼び出され、テストメソッドに戻ります。今回はテストメソッドが実行されず、テストは単に再試行され、次のテストに進みます。 –
現在追加のパラメータ 'ITestContext itx'のためにコンパイルされません。 –