这是有问题的方法:
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方法受到保护,所以我认为它可以在派生类中被覆盖,并用于设置一些标志或其他东西并断言.
所有的想法都受到欢迎和赞赏.
最佳答案 您可以创建DataWarehouseFactsMergerFactory的实现,该实现创建DataWarehouseFactsMerger的实现,这些实现能够记录输入的fileBatch和每个任务的开始时间,但其余部分并没有真正做任何事情.