.net 在任务并行库周围是否有一个接口包装器,以便我可以将其替换为单元测试?
我刚才问过。我现在知道这是一个坏主意,封装任务的调度和运行应该是抽象的,这样就可以从单元测试中通过同步调度程序 我目前有使用(TPL)的代码,我想在我的类型中注入类似于.net 在任务并行库周围是否有一个接口包装器,以便我可以将其替换为单元测试?,.net,multithreading,unit-testing,task-parallel-library,.net,Multithreading,Unit Testing,Task Parallel Library,我刚才问过。我现在知道这是一个坏主意,封装任务的调度和运行应该是抽象的,这样就可以从单元测试中通过同步调度程序 我目前有使用(TPL)的代码,我想在我的类型中注入类似于ITaskScheduler的东西,以提取调度的责任,并使我能够在测试中通过同步替代方案 这样的事情存在吗?我正在寻找包装Task.Factory.StartNew和Task.ContinueWith的东西。我不认为我自己的工作不算太多,但我确信有很多小问题,如果已经有了,我真的不想花时间去做。你可以定义这样一个接口,并将实际的库
ITaskScheduler
的东西,以提取调度的责任,并使我能够在测试中通过同步替代方案
这样的事情存在吗?我正在寻找包装
Task.Factory.StartNew
和Task.ContinueWith
的东西。我不认为我自己的工作不算太多,但我确信有很多小问题,如果已经有了,我真的不想花时间去做。你可以定义这样一个接口,并将实际的库类封装在实现接口的facade中。对于测试,将外观与模拟对象交换。替换任务
类是很困难的,即使您从任务
继承了一个新类:因为任务调度器
和任务工厂
在任务
上不是通用的,所以不会有多大帮助
根据我的经验,更好的方法是使用您自己的TaskScheduler
类(继承自TaskScheduler
)。您可以将其传递到TaskFactory
构造函数中,然后在整个过程中使用该TaskFactory
现在,为了进行测试,您可以使用不同的
TaskScheduler
,具有不同程度的并行性(如果需要,可以减少到1个线程)您可以将额外的日志记录添加到TaskScheduler
类中,以便在每个任务开始和结束时进行日志记录。我认为,只要将任务API直接放在接口后面,就不会有任何问题。使用该接口与直接使用API应该没有太大区别。