到目前为止,我已经避免了测试多线程代码的噩梦,因为它看起来像是一个雷区太多了.我想问一下人们如何测试依赖线程成功执行的代码,或者人们如何测试那些只在两个线程以给定方式交互时出现的问题?
对于今天的程序员来说,这似乎是一个非常关键的问题,将我们的知识集中在这个imho上是有用的.
有没有人对一致的多线程应用程序单元测试方法有任何建议?我做了一个应用程序,其中我们的模拟"工作线程"有一个thread.sleep,其时间由公共成员变量指定.我们将使用它,以便我们可以设置特定线程完成其工作所需的时间,然后我们可以执行我们的断言.有没有更好的方法来做到这一点?任何可以处理这个问题的.Net的好模拟框架?
我对单元测试很陌生,目前正在尝试使用Visual Studio的测试工具.
我的问题是如何在这些测试中定义关于并发行为的断言.例如,给定一个BoundedChan<T>实现有界通道的类,我如何指定测试
channel.Send不会阻止"或channel.Send将阻止直到读取一个值"编写这些断言是否有优雅的解决方案?
如何证明多线程在我的C#程序中有效?这是针对测试要求的.例如,我将不得不在记录器类中添加一些锁定(是的,我知道,我不应该编写自己的日志类),我需要一个测试用例来证明更改是有效的.