Ste*_*unn 3 .net multithreading unit-testing task-parallel-library
我刚才问了这个问题.我现在知道这是一个坏主意,并且应该抽象封装任务的调度和运行,以便可以从单元测试中传入同步调度程序.
我目前使用的是使用任务并行库(TPL)的代码,我想ITaskScheduler
在我的类型中注入一些东西来提取调度的责任,并使我能够在我的测试中传递同步替代方案.
这样的事情存在吗?我正在寻找包装Task.Factory.StartNew
和包装的东西Task.ContinueWith
.我不认为它没有太多的工作推出自己的,但我敢肯定有很多小的陷阱,我真的不希望花时间做,如果有一个已经可用.
代入Task
类是硬的,即使你继承一个新的类Task
:因为TaskScheduler
和TaskFactory
不一般的上Task
它也不会有多大效果的.
根据我的经验,更好的方法是使用自己的TaskScheduler
类(继承自TaskScheduler
).您可以将它传递给TaskFactory
构造函数,然后TaskFactory
在整个过程中使用它.
现在进行测试可以使用具有不同TaskScheduler
并行度的不同(如果需要,可以使用不到1个线程),并且可以在TaskScheduler
类中添加额外的日志记录,以便在启动和完成时记录每个任务.
归档时间: |
|
查看次数: |
603 次 |
最近记录: |