我正在使用OpenCover报告我的NUnit测试的代码覆盖率,当我运行一系列需要很长时间的测试时,我得到以下异常:
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实现运行正常(预计速度较慢)。这三个中最慢的,实际的SQL实现(由于每个测试之间的拆除/设置而缓慢)会导致此错误。
网上有关于自定义代码的线程和WaitHandles的信息,但这种情况发生在第三方工具中。我可以用OpenCover来解决这个问题吗?一些命令行参数明确指示线程允许这些长时间运行的测试?也许是一个需要传递给NUnit的论点?