我需要想法来对这个Tasked方法进行单元测试

时间:2011-10-25 18:39:23

标签: 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方法受到保护,所以我认为它可以在派生类中被覆盖,并用于设置一些标志或其他东西并断言。

欢迎并赞赏所有想法。

1 个答案:

答案 0 :(得分:2)

您可以创建DataWarehouseFactsMergerFactory的实现,该实现创建DataWarehouseFactsMerger的实现,这些实现能够记录输入的fileBatch和每个任务的开始时间,但其余的则为'真的做了什么。