2016-08-02 14 views
0

アプリケーションテストスイートでは、このエラーで失敗するランダムテストがあります。 テスト 'Some_Test_Name'が実行タイムアウト時間を超えました。SpecFlowを解決するScenarioContextを解決するエラー

このようなエラーが発生すると、直後のテストもこのエラーで失敗します。 System.Threading.ThreadAbortException:スレッドが中止されました。 標準出力メッセージ: - >警告:以前のScenarioContextは削除されませんでした。 - >エラー:スレッドが中止されました。

これを回避するためにさまざまなことを試しましたが、ScenarioContextにアクセスして、それが存在する必要があった場合に処分する方法が見つかりませんでした。 BeforeScenarioからアクセスしようとしましたが、必ずエラーが発生してからヒットします。

私はいくつかのタイムアウトの問題を解決しましたが、まだ発生しているランダムな問題については、ScenarioContextの問題による障害を減らし、それらの偽陽性をテスト結果から削除したいと考えています。何か案は?

答えて

0

警告The previous ScenarioContext was not disposedは、通常、テストが完了しないか、またはAfterScenarioメソッドが例外をスローすると発生します。

この警告は無害であり、無視しても問題ありません。テストがタイムアウトしないようにするか、またはテストが正常に完了するようにしているときには消えます。

+0

私はかなり私が明示的に記述すると、私は偽を削除したいということでした。と言いましたこれが起こったときに起こる陽性です。偽陽性で散在したテストを実行すると、これは良質ではありません。 –

+0

私はそうですこれがあなたの質問に答えたと思わないなら、試してみてください。私はちょうどこの警告がspecflowコードから来る方法を説明しています。警告を防止する唯一の方法は、クリーンアップを実行するコードが実行されないようにする、後シナリオのメソッドでタイムアウトを防止するか、例外を停止することです。もう1つの選択肢は、この問題を引き起こすいずれかの状況でシナリオがクリーンアップされるように、スペックフローコードを修正することです。 –

+0

specflow githubページで問題を提起したら、修正するために何ができるかを見てみましょう。ただし、どのようなタイムスケールも約束することはできません。 –

0

私も同じ問題に直面しました。 - 最後[AfterScenario]ブロック私の見解では。

try 
{ 
    //your stuff 
} 
finally 
{ 
    driver.Dispose(); 
} 

で、これは同様にあなたのために働く必要があります。

+0

これは、複数のテストを同時に実行する場合には機能しません。最終的にヒットすると、ドライバは廃棄されたかどうかにかかわらず、最終的に各テストの後に実際にドライバを処分するべきである – Danny

+0

が処分されます。それが最終的なポイントです。 – nitzel

関連する問題