SpecFlow、NUnit、Coypu (WatiN ドライバーを使用したブラウザー自動化用) を介してプロジェクトで受け入れテストを実行しています。テストの実行は、powershell/psake スクリプトを介して呼び出されます。
これらのテストを自分のローカル ボックスで実行すると、正常に動作します。ただし、Jenkins ジョブがこれらのテストを自動的に実行するビルド サーバーがあり、この Jenkins ジョブを介して実行すると実行されず、ハングするだけです。
タスク マネージャーを見るとiexplore.exe
、Jenkins ジョブの実行時に 2 つのインスタンスが作成されていることがわかります。ただし、特定の時点の後、ハングするだけです-メモリ使用量やCPUに変化はありません。
nunit-agent-x86.exe
もnunit-console-x86.exe
実行されていますが、ほとんどがハングしておりnunit-agent-x86.exe
、メモリ内で非常にゆっくりと上昇しています。
iexplore.exe プロセスの 1 つを強制終了すると、処理は続行されますが、その後 SpecFlow 仕様はすべて失敗します。
iexplore.exe を強制終了した時点で、次の例外がログに記録されます。
Unhandled Exception: System.Runtime.InteropServices.COMException: The remote procedure call failed. (Exception from HRESULT: 0x800706BE)
サーバーにログインしたときに psake スクリプトを手動で呼び出すと、スペックは正常に動作します。
この問題は、 https ://gist.github.com/2301407 の要点にあるように、BrowserSession に基本的な DI を使用しようとしたときに発生し始めました。
その前は、NUnit [SetupFixture] クラスの静的プロパティを介して BrowserSession を共有していました。モーダルダイアログが正しく機能しないテストに関する小さな問題を除いて、物事はそのようにほとんど問題なく機能していましたが、私はそれを正しく行っているかどうか確信が持てなかったので、要点でテクニックを実行したかったのです
ハングの原因について少し迷っています。それが何であるか、またはそれを追跡するためのヒントはありますか?
更新: ブラウザーとして Firefox に切り替え、ドライバーとして Selenium に切り替えた後、問題は解消されました...