2017-01-18 13 views
0

テストが失敗したときにテストを複数回実行するために再試行を使用しています。 しかし、私は、例外が発生したとき(例えばelemntを待っているときのタイムアウト)にテストが実行され、設定されていないものだけが実行されることに気付きました。テストが失敗したときNunit_Retryはタイムアウトの失敗時に1つだけ実行します

[Test] 
 
[NUnit_retry.Retry(times: 3, requiredPassCount: 1)] 
 
     public void MyTest() 
 
    { 
 
     some code... 
 
    } 
 
     
 

答えて

0

をNUnitのの[Retry]属性だけではなく、エラーよりも、再試行:

これは私がしようとしているものです。これは、AssertionExceptionsが再試行をトリガーすることを意味しますが、他の例外は再試行を行いません。

タイムアウトをどのようにしているのか、NUnit [Timeout]属性を使用していますか?これにより、再試行がトリガーされます。しかし、タイムアウトが別の種類の例外を引き起こしている場合は、これを期待する必要があり、代わりに「発生しないと主張する」必要があります。これは、関連する行が例外をスローしないと主張することができます。

string toFetch; 
Assert.That(() => { toFetch = FetchMyString(); }, Throws.Nothing); 

あなたの代わりにグローバルで何かをやってみたかった場合は、代わりにカスタムResultState.Errorに再試行属性だけでなく、ResultState.Failureを実装することを望むかもしれません。どのように現在のRetryAttributeが実装されているかを見てみましょう。これにより、どこから始めるべきかを知ることができます。 @クリス

Retry Attribute Docs

+0

10xが私の代わりに例外をスロー(たぶん)で、タイムアウトの他のいくつかのフォームを持っています。どのように私はアサーションを提案して正確にそれをラップするのだろうか?それぞれの場合にタイムアウトが現れると思うのですか?任意の一般的なソリューションですか? –

+0

@ YanivEliav - 私はより多くの情報といくつかの訂正で私の答えを更新しました。 =) – Chris

関連する問題