在单元测试中产生线程

时间:2013-08-26 13:23:01

标签: c# .net unit-testing testing

有很多关于如何对线程代码进行单元测试的信息,但没有关于在单元测试方法中生成线程来测试同步机制的信息。

[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和随附的单元测试框架

1 个答案:

答案 0 :(得分:1)

这不是一个完整的答案,但我建议您查看VS 2010 Test Runner error "The agent process was stopped while the test was running."的想法。

你知道在代码中抛出异常的位置吗?

编辑回答:

当主线程以外的线程抛出未处理的异常时,这是结果。这就是这种情况,即循环或线程本身没有问题。