gpt4 book ai didi

.net - 是否有围绕任务并行库的接口(interface)包装器,以便我可以将其换出进行单元测试?

转载 作者:行者123 更新时间:2023-11-30 23:57:03 26 4
gpt4 key购买 nike

我问了this question不久前。我现在知道这是一个坏主意,应该抽象封装任务的调度和运行,以便可以从单元测试中传入同步调度程序。

我目前有使用 Task Parallel Library 的代码(TPL) 并且我想将类似 ITaskScheduler 的东西注入(inject)到我的类型中,以提取调度责任并使我能够在我的测试中传递同步替代方案。

有这样的东西吗?我正在寻找包装 Task.Factory.StartNewTask.ContinueWith 的东西。我不认为自己推出一个不会有太多工作,但我确信有很多小的陷阱,如果已经有一个可用的,我真的不想花时间去做。

最佳答案

替换 Task 类很难,即使您从 Task 继承了一个新类:因为 TaskSchedulerTaskFactoryTask 上不是通用的,它根本没有多大帮助。

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

现在为了测试,您可以使用具有不同并行度的不同 TaskScheduler(如果您愿意,可以减少到 1 个线程)并且您可以向您的 TaskScheduler 类添加额外的日志记录在每个任务开始和完成时记录它。

关于.net - 是否有围绕任务并行库的接口(interface)包装器,以便我可以将其换出进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3547416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com