Мне нужны идеи для модульного тестирования этого метода Tasked - PullRequest
4 голосов
/ 25 октября 2011

Это метод, о котором идет речь:

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 Ответ

2 голосов
/ 25 октября 2011

Вы можете создать реализацию DataWarehouseFactsMergerFactory, которая создает реализации DataWarehouseFactsMerger, которые способны регистрировать, в котором было введено fileBatch, и время начала каждой задачи, но в остальном ничего не делают.

...