0

我正在使用 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 的信息,但这发生在第 3 方工具内部。我可以用 OpenCover 做些什么来解决这个问题吗?一些命令行参数明确指示线程允许这些长时间运行的测试?也许它需要传递给 NUnit 的参数?

4

0 回答 0