单元测试线程?

car*_*man 7 c# multithreading unit-testing

我只需要对这样的方法进行单元测试:

public void start()
{
    myThread.Start();
}

public void stop()
{
    myThread.Abort();
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我可以调用start方法并检查IsAlive == true但是然后线程继续在后台工作并调用它自己的方法.另一种方式是我打电话开始然后立即停止,但它不整洁,因为它会像我正在测试两件事.这很简单,但是很高兴!

Mik*_*ike 7

诀窍是将异步行为与逻辑分开.观察您的实际逻辑是同步的,并且异步部分只是介于两者之间的"等待时间".

xUnit测试模式这本书很好地描述了它.它甚至是一种模式 - 谦卑的对象.它的解释方式比我能做得更好.


dec*_*one 2

使用thread synchronizationwait handles等待正在运行的线程。

线程同步(C# 编程指南)