NUnit テストのコード カバレッジをレポートするために OpenCover を使用していますが、長時間かかる一連のテストを実行すると、次の例外が発生します。
An exception occured: The number of WaitHandles must be less than or equal to 64.
stack: at System.Threading.WaitHandle.WaitAny(WaitHandle[] waitHandles, Int32 millisecondsTimeout, Boolean exitContext)
at OpenCover.Framework.Manager.ProfilerManager.ProcessMessages(List`1 handles, GCHandle pinnedComms)
at OpenCover.Framework.Manager.ProfilerManager.RunProcess(Action`1 process, Boolean isService)
at OpenCover.Console.Program.Main(String[] args)
これは、テストでモック DAL を実際の DAL に置き換えた場合にのみ発生します。基本的に、モック実装ではなく統合実装を使用して、同じインターフェイスに対して同じ一連のテストを実行しています。モック DAL テストは正常に実行され、XML ファイルを使用する別の DAL 実装は正常に実行されます (予想どおり遅くなります)。3 つの中で最も遅い実際の SQL 実装 (各テスト間のティアダウン/セットアップのために遅い) は、このエラーを引き起こします。
スレッド化とカスタム コードの WaitHandles に関するオンラインの情報は不足していませんが、これはサード パーティのツール内で発生しています。これを修正するために OpenCover でできることはありますか? これらの長期実行テストを許可するようにスレッドに明示的に指示するコマンドライン引数はありますか? おそらく、NUnit に渡す必要がある引数でしょうか?