这是有问题的方法:
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/