2017-11-22 21 views
0

testNgを使用した私のテストでは、テストに失敗するたびに失敗年齢をdbに格納しました。失敗したすべてのケースを再実行する以外の方法がありますが、たとえば、次のような条件があります。失敗の年齢が1の場合のみ再実行します。afterメソッドで特定のテストを再実行することができます。再試行は他の条件でテストに失敗しました

答えて

0

はいこれは、ファッションについてラウンドで行われることがあります。

まずクラスにIHookableインターフェイスを実装させることから始めます。これにより、TestNGは常にテストが実行されるrun()メソッドを実行します。したがって、このrun()の実装では、基本的にDBからテストメソッドを照会して、失敗時の経過時間が再実行されたことを確認し、テストに失敗したかどうかを調べます。 次に、再試行アナライザーをテストに関連付けて、失敗した場合に再実行されるようにします。

そうすべきです。

名前に基づいてテストメソッドが条件付きで失敗したことを示すサンプルがあります。その条件付きチェックは、あなたの失敗時代に基づいて決定するために強化することができます。ここで

import org.testng.IHookCallBack; 
import org.testng.IHookable; 
import org.testng.ITestResult; 
import org.testng.annotations.Test; 

public class TestClassSample implements IHookable { 
    @Override 
    public void run(IHookCallBack callBack, ITestResult testResult) { 
     if ("testMethod1".equals(testResult.getMethod().getMethodName())) { 
      testResult.setStatus(ITestResult.FAILURE); 
     } else { 
      callBack.runTestMethod(testResult); 
     } 
    } 

    @Test 
    public void testMethod1() { 
     System.err.println("testMethod1()"); 
    } 

    @Test 
    public void testMethod2() { 
     System.err.println("testMethod2()"); 
    } 
} 

は出力です:

testMethod2() 

=============================================== 
Default Suite 
Total tests run: 2, Failures: 1, Skips: 0 
=============================================== 
+0

これはクールですが、私は最初の実行後にテストをトリガすることができます何かを探していた、この実行は、()私がした、テストの前に決めるだろうテストが失敗した後に状態で再トリガーできるものを探す –

+0

@FrancisChristopher - 私が共有したサンプルは、それを行うことができるはずです。 'callBack()'を使ってテストメソッドを呼び出した後、テストステータスを調べて失敗したかどうかを確認した後、テストステータスの変更を基本的に移す必要があります。しかし、再試行のメカニズムはまだ実行されます。しかし、設定することができるITestResult属性を調べることで、そのことを見分けることができます。 –

+0

クリシュナン、ありがとう、私はそれをすることができた、あなたが言ったように。 –