加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:21:18 所属栏目:百科 来源:网络整理
导读:这是有问题的方法: public void StartBatchProcessing(IFileBatch fileBatch){ var dataWarehouseFactsMerger = m_dataWarehouseFactsMergerFactory.Create(fileBatch); dataWarehouseFactsMerger.Merge(); if(!m_isTaskStarted) { m_isTaskStarted = true;
这是有问题的方法:

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和每个任务的开始时间,但其余部分并没有真正做任何事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读