【发布时间】:2013-08-29 00:11:26
【问题描述】:
有很多关于如何对线程代码进行单元测试的信息,但没有关于在单元测试方法中生成线程以测试同步机制的信息。
[TestMethod]
public void TestDiscountThreading() {
Thread[] threads = new Thread[50];
for (int i = 0; i < threads.Length; i++) {
threads[i] = new Thread(PriceThread);
threads[i].Start();
}
for (int i = 0; i < threads.Length; i++)
threads[i].Join();
}
我想强调测试 PriceThread 内的代码中的同步是否正确实现,但每次运行该方法时,我都会收到错误“测试运行时代理进程已停止”。甚至有可能在单元测试中生成线程或者这里有什么问题?
我使用 Visual Studio 2010 和随附的单元测试框架
【问题讨论】:
-
这在我看来甚至不像是单元测试。更像是负载测试或功能测试。
-
您无法测试同步是否正常工作,只能发现它没有正常工作。
-
我同意,测试同步并不是 100% 有用,因为它在实时应用程序中无法预测代码的运行方式,但是产生 100 个调用相同函数的线程的测试应该可以说明一些事情
标签: c# .net unit-testing testing