【发布时间】:2012-10-29 19:41:46
【问题描述】:
所以我有一些代码
Task.Factory.StartNew(() => this.listener.Start()).ContinueWith(
(task) =>
{
if (task.IsCompleted)
{
this.status = WorkerStatus.Started;
this.RaiseStatusChanged();
this.LogInformationMessage("Worker Started.");
}
});
当我测试时,我正在模拟所有依赖对象(namley this.listener.Start())。问题是测试在调用 ContinueWith 之前完成执行。当我调试时,由于我单步执行代码的额外延迟,它被调用得很好。
那么我如何 - 从不同程序集中的测试代码 - 确保代码在我的测试达到其断言之前运行?
我可以只使用 Thread.Sleep ...但这似乎是一种非常老套的方法。
我想我正在寻找 Thread.Join 的 Task 版本。
【问题讨论】:
-
怎么完成的,有没有报错?
-
没有错误... listener.start 被模拟并完成.. 我可以在调试模式下验证。这是一个时间问题
-
我会说这是一个同步问题,你需要从你调用的异步方法中获得一些反馈
-
是的,我同意,任务的包装似乎是答案。它只是到那时我开始觉得我正在实现与线程池已经可以做的非常相似的事情。应该坚持我所知道的哈哈。
标签: c# unit-testing nunit moq task-parallel-library