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 次 |
| 最近记录: |