0

SpecFlow、NUnit、Coypu (WatiN ドライバーを使用したブラウザー自動化用) を介してプロジェクトで受け入れテストを実行しています。テストの実行は、powershell/psake スクリプトを介して呼び出されます。

これらのテストを自分のローカル ボックスで実行すると、正常に動作します。ただし、Jenkins ジョブがこれらのテストを自動的に実行するビルド サーバーがあり、この Jenkins ジョブを介して実行すると実行されず、ハングするだけです。

タスク マネージャーを見るとiexplore.exe、Jenkins ジョブの実行時に 2 つのインスタンスが作成されていることがわかります。ただし、特定の時点の後、ハングするだけです-メモリ使用量やCPUに変化はありません。

nunit-agent-x86.exenunit-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 に切り替えた後、問題は解消されました...

4

1 に答える 1

0

Coypuリストにいくつかの回答がありました。現時点ではFirefoxですべてが正常であるため、まだテストしていませんが、他の誰かの助けになる場合に備えて...

2012年8月2日木曜日16:38:30UTC+ 1、アディエルは次のように書いています。

[...] STA(シングルスレッド)で実行するには、watinにnunitが必要であると思います。これは、問題に関連している可能性があります。

言い換えると、静的シングルトンブラウザセッションでテストスレッドセーフにしたかもしれませんが、今ではspecflowのIOCを介して、nunitの実行方法のために複数のインスタンスを取得しています。


2012年8月2日木曜日16:41:11UTC+ 1、マットエリスは次のように書いています。

これは、InternetExplorerのプロテクトモードが邪魔になっているように聞こえます。IEは、イン​​ターネットやイントラネット(およびabout:blank)などのさまざまなゾーンをさまざまなプロセスで実行しますが、IIRCWatiNはそれをうまく処理しません。サーバーでプロテクトモードを無効にできる場合は、問題ないはずです。

于 2012-08-03T08:18:00.227 に答える