多线程单元测试

时间:2012-03-09 13:06:27

标签: c# multithreading visual-studio-2008 mstest

我有一个帮助器类,它根据模式验证XML。有一些静态方法/函数与实例方法/函数结合使用,我想测试它的线程安全性。

使用MSTest(VS2008)测试此帮助程序的最佳方法是什么?

3 个答案:

答案 0 :(得分:0)

也许我误解了你的问题,为什么在等待所有线程完成然后检查结果中的并发问题之前,为什么不启动多个同步线程来管理你的类并捕获所有线程相关的异常?

答案 1 :(得分:0)

在我看来,单元测试线程问题的最佳方法是预测问题并让测试专门导致每种情况。每次针对相同代码运行时,单元测试应始终产生完全相同的结果。

如果您没有要测试的特定问题,可能需要查看Microsoft CHESS(http://research.microsoft.com/en-us/projects/chess/)。

答案 2 :(得分:0)

这样做很难,因为你无法确定de OS如何安排线程执行。您的测试很可能会随机失败。 如果可以,请更改您的设计,以便减少锁定/其他同步技术并设计线程安全性(例如,不使用共享状态)。