私が作成したWCFホスト管理エンジンを単体テストしようとしています。エンジンは基本的に、構成に基づいてオンザフライでServiceHostインスタンスを作成します。これにより、新しいサービスが追加されたり古いサービスが削除されたりするたびに、すべてのサービスを停止して再起動することなく、利用可能なサービスを動的に再構成できます。
ただし、ServiceHostの動作方法が原因で、このホスト管理エンジンの単体テストで問題が発生しました。特定のエンドポイントに対してServiceHostがすでに作成され、開かれ、まだ閉じられていない場合、同じエンドポイントの別のServiceHostを作成できず、例外が発生します。最近の単体テストプラットフォームはテストの実行を並列化しているため、このコードを単体テストする効果的な方法はありません。
私はxUnit.NETを使用しましたが、その拡張性のために、テストを逐次実行するように強制する方法を見つけることができると期待していました。しかし、私には運がありませんでした。SOの誰かが同様の問題に遭遇し、単体テストをシリアルに実行する方法を知っていることを願っています。
注:ServiceHostは、Microsoftによって作成されたWCFクラスです。私はその行動を変える能力がありません。各サービスエンドポイントを1回だけホストすることも適切な動作ですが、単体テストには特に役立ちません。
TestServer
dockerで複数を実行しようとすると、同様の問題が発生しました。そのため、統合テストをシリアル化する必要がありました。