この使命を帯び方法ユニットテストのアイデアを必要とする:あなたは、私はタスクを1つずつキューにTPLを使用していると私はそれをテストしたいと思います見ることができるように私はこれが問題になっている方法である
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));
}
}
タスクは、直前のタスクが完了するとすぐに到着する順序で実行されます。
ProcessBatchメソッドは保護されているので、派生クラスで上書きしてフラグなどを設定してアサートすることができると思います。
すべてのアイデアは大歓迎です。
'StartBatchProcessing'はあるスレッドまたは複数のスレッドで呼び出されていますか? –
@ LasseV.Karlsen:それは1つのスレッドで呼び出されますが、それは本当に重要ですか?私はちょうどテスト内の単一のスレッド上で実行されるように、メソッド内のロジックをテストしたいと思います。 –