【发布时间】:2011-01-17 21:56:29
【问题描述】:
我正在为一些线程锁定逻辑编写单元测试,以使测试更容易快速失败;我希望所有线程之间经常和随机地切换。
我知道这并不能证明我们没有任何错误,但至少它应该让错误更频繁地出现。
感谢大家说“不要这样做”,但我有一个非常简单的锁定,应该永远不会失败,我们目前只有单元测试。任何可以降低有人在不了解他们在做什么的情况下移除锁定的风险的措施都是值得的。
【问题讨论】:
标签: .net multithreading unit-testing
我正在为一些线程锁定逻辑编写单元测试,以使测试更容易快速失败;我希望所有线程之间经常和随机地切换。
我知道这并不能证明我们没有任何错误,但至少它应该让错误更频繁地出现。
感谢大家说“不要这样做”,但我有一个非常简单的锁定,应该永远不会失败,我们目前只有单元测试。任何可以降低有人在不了解他们在做什么的情况下移除锁定的风险的措施都是值得的。
【问题讨论】:
标签: .net multithreading unit-testing
看看CHESS。
【讨论】:
我不同意随机移动线程会更有效地测试您的代码。如果你足够努力,最好的多线程代码可能会陷入死锁。
如果不知道您在做什么,我无法更具体,但总的来说,我认为负载测试是测试线程锁定逻辑的更有效方法。
【讨论】:
This question 不是关于线程振动器,而是关于测试线程。看看推荐的工具。一位评论者链接了this other question,这也可能很有趣。
【讨论】:
您可能值得花时间在 MS Research 调查 CHESS。
【讨论】:
我强烈建议您不要这样做。这将使您的单元测试不可信,并使它们变得无用。单元测试应始终具有相同的结果(当代码不变时)。当这样的测试不可预测时,开发人员将不再关注它,而不是编写这个单元测试成为一种浪费。
对此进行测试可能很有用,但不能作为单元测试。这对我来说更像是一个特殊的测试。
[更新] 查看this thread 中的this answer。作者对多线程单元测试也有同感,但他解释得比我好。
【讨论】: