我觉得我可能做了一些完全错误的事情,所以如果你有其他的方法,请告诉我。
我正在用服务栈构建一个服务。我正在用Xunit和NCrunch测试这项服务。我想让我的测试并行运行,现在多亏了NCrunch…然而,有一个问题。
我所有的测试都依赖于我的服务已经启动并运行的事实——它是一个共享的资源。一个依赖项。我不是特别关心它,但似乎服务堆栈不让你为每个测试启动多个实例(另外,我需要做一些讨厌的表前缀或postgresql - blek内部的东西)…
我所需要的只是在任何测试运行之前通过代码启动我的服务,并在所有测试完成时停止它。我需要它是通过代码,因为我没有收到服务器端代码的代码覆盖信息,如果我不得不手动启动服务。
我可以手动启动服务,我所有的测试并行运行,并通过完美的-但问题是,我似乎找不到一个好的钩为"预测试"one_answers"后测试"的行动。
我已经研究过使用信号量作为一种"引用计数"的解决方案,但它实际上与我需要的相反。我不想提前指定要运行多少个测试。我需要类似于dijkstra计数信号量的东西——但是我还没有找到一个基于命名(系统范围)信号量的实现。
互斥锁不起作用——因为碰巧启动服务的测试在停止服务之前仍然需要知道所有其他测试何时完成——它不能在Dispose方法中这样做。
许多与线程之间同步对象相关的正常解决方案不适用于这种情况,因为测试在它们自己的AppDomain中运行。
提前感谢您的帮助
几年前我写过一篇关于解决类似问题的博文。
http://netvignettes.wordpress.com/2012/01/03/sharepoint-net-3-5-woes-and-synchronization-between-processes/向下滚动到代码块并开始阅读,这样您就可以跳过顶部的SharePoint cruft