【发布时间】:2017-04-20 07:24:44
【问题描述】:
我正在使用 WinForms (.NET 4.0) 中的任务来执行冗长的操作,例如 WCF 调用。应用已经在大量使用Tasks的产品中(几乎所有使用Tasks的方法都是void)。
在单元测试期间,我们使用AutoResetEvents(在实际代码中)找出给定任务何时完成然后执行断言。
这让我想到几乎所有的AutoResetEvent 都是浪费精力。它们只是满足单元测试需求,没有别的。
我们是否可以在实际代码运行时同样围绕任务创建一个包装器...它们应该在后台工作,并且在单元测试的情况下它们应该是同步的。
类似于BackgroundWorker 的以下链接。
http://si-w.co.uk/blog/2009/09/11/unit-testing-code-that-uses-a-backgroundworker/
【问题讨论】:
-
为什么不能在这些任务上使用
Wait()来查找它们何时完成? -
方法已经用 void 写回了很久。使用 Task 返回更新所有方法将是一项非常艰巨的任务。
-
我以为您已经想更新方法以删除
AutoResetEvents 并引入Task包装器。我的建议还差多少?
标签: unit-testing asynchronous c#-4.0 task-parallel-library task