.net 在任务并行库周围是否有一个接口包装器,以便我可以将其替换为单元测试?

.net 在任务并行库周围是否有一个接口包装器,以便我可以将其替换为单元测试?,.net,multithreading,unit-testing,task-parallel-library,.net,Multithreading,Unit Testing,Task Parallel Library,我刚才问过。我现在知道这是一个坏主意,封装任务的调度和运行应该是抽象的,这样就可以从单元测试中通过同步调度程序 我目前有使用(TPL)的代码,我想在我的类型中注入类似于ITaskScheduler的东西,以提取调度的责任,并使我能够在测试中通过同步替代方案 这样的事情存在吗?我正在寻找包装Task.Factory.StartNew和Task.ContinueWith的东西。我不认为我自己的工作不算太多,但我确信有很多小问题,如果已经有了,我真的不想花时间去做。你可以定义这样一个接口,并将实际的库

我刚才问过。我现在知道这是一个坏主意,封装任务的调度和运行应该是抽象的,这样就可以从单元测试中通过同步调度程序

我目前有使用(TPL)的代码,我想在我的类型中注入类似于
ITaskScheduler
的东西,以提取调度的责任,并使我能够在测试中通过同步替代方案


这样的事情存在吗?我正在寻找包装
Task.Factory.StartNew
Task.ContinueWith
的东西。我不认为我自己的工作不算太多,但我确信有很多小问题,如果已经有了,我真的不想花时间去做。你可以定义这样一个接口,并将实际的库类封装在实现接口的facade中。对于测试,将外观与模拟对象交换。

替换
任务
类是很困难的,即使您从
任务
继承了一个新类:因为
任务调度器
任务工厂
任务
上不是通用的,所以不会有多大帮助

根据我的经验,更好的方法是使用您自己的
TaskScheduler
类(继承自
TaskScheduler
)。您可以将其传递到
TaskFactory
构造函数中,然后在整个过程中使用该
TaskFactory


现在,为了进行测试,您可以使用不同的
TaskScheduler
,具有不同程度的并行性(如果需要,可以减少到1个线程)您可以将额外的日志记录添加到
TaskScheduler
类中,以便在每个任务开始和结束时进行日志记录。

我认为,只要将任务API直接放在接口后面,就不会有任何问题。使用该接口与直接使用API应该没有太大区别。