ASP.NET MVC3 Web サイト用の UI テスト スイートがあります。テスト中に Selenium と IIS Express を使用しています。IIS Express は、最初のテストの前に開始され、最後のテストの後にシャットダウンされます。
私たちのシステムにはいくつかの外部依存関係がありますが、UI のテストには無関係ですが、これらの依存関係をモックするために Deleporter を使用しようとしています。Deleporter の構成は通常、各テストの開始時に行われ、しばらくの間は問題なく動作します。しかし、いくつかのテストが実行された後、IIS Express プロセスの Deleporter サービスが動作を停止し、クライアントがアクセスできなくなります。その後、後続のすべてのテストが失敗します。場合によっては、テスト スイート全体が正常に実行されることもあります。
TCPView で割り当てられたポートを確認すると、Deleporter サービスが応答を停止すると、構成されたポートの TCP チャネルが IIS Express プロセスから実際に消えていることがわかります。なぜこれが起こるのか分かりますか?使用するブラウザー (Chrome、Firefox、IE) によっては、各テストの実行に最大 45 秒かかる場合があるため、Deleporter サービスへの呼び出しの間に約 30 秒以上かかる場合があります。
Deleporter コードを見ると、InitializeLifeTimeServices メソッドに対して null を返し、Singleton サービスとして登録されるように Deleporter サービスが実装されていることがわかります。