c# - 我需要一些想法来对这个 Tasked 方法进行单元测试

标签 c# unit-testing task

这是有问题的方法:

public void StartBatchProcessing(IFileBatch fileBatch)
{
    var dataWarehouseFactsMerger = m_dataWarehouseFactsMergerFactory.Create(fileBatch);
    dataWarehouseFactsMerger.Merge();

    if(!m_isTaskStarted)
    {
        m_isTaskStarted = true;
        m_lastQueuedBatchProcessingTask = new TaskFactory().StartNew(() => ProcessBatch(dataWarehouseFactsMerger));
    }
    else
    {
        m_lastQueuedBatchProcessingTask = m_lastQueuedBatchProcessingTask.ContinueWith(previous => ProcessBatch(dataWarehouseFactsMerger));
    }
}

如您所见,我正在使用 TPL 将任务一个接一个地排队,我想测试任务是否会在前一个任务完成后立即按照它们到达的顺序执行。

ProcessBatch 方法是 protected ,所以我认为它可以在派生类中被覆盖并用于设置一些标志或其他东西并断言。

欢迎和赞赏所有想法。

最佳答案

您可以创建 DataWarehouseFactsMergerFactory 的实现,它创建 DataWarehouseFactsMerger 的实现,能够记录输入了哪个 fileBatch 以及开始时间每个任务,但对于其余部分,实际上什么都不做。

关于c# - 我需要一些想法来对这个 Tasked 方法进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7894174/

相关文章:

ios - 在 Swift 中测试 pushViewController

unit-testing - 在查看算法时,选择特定种类的覆盖标准背后的基本原理是什么?

c# - 在任务继续中阻止异步 HttpClient 调用时出现死锁

python - 具有非同质任务的 Celery

c# - 收到警告, 'Type Parameter X Hides Interface X'

c# - 代表经过身份验证的 SAML 用户发出 asmx 请求

c# - 如何表示整数无穷大?

c# - Mono.Cecil:操作可能会在运行时不稳定

javascript - 如何将 ES6 类模块导入 Jasmine 进行测试?

Ada 语句 'accept start do ' 中的任务未完成全部执行?