相关疑难解决方法(0)

等到所有任务完成单元测试

我有这个课我要单元测试:

public class SomeClass
{
    public void Foo()
    {
        Bar();
    }

    private void Bar()
    {
        Task.Factory.StartNew(() =>
        {
            // Do something that takes some time (e.g. an HTTP request)
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我的单元测试的样子:

[TestMethod]
public void TestFoo()
{
    // Arrange
    var obj = new SomeClass();

    // Act
    obj.Foo();
    obj.Foo();
    obj.Foo();

    // Assert
    /* I need something to wait on all tasks to finish */
    Assert.IsTrue(...);
}
Run Code Online (Sandbox Code Playgroud)

所以,我需要让单元测试线程等到Bar方法中启动的所有任务都完成了他们的工作,然后再开始我的断言.

重要提示:我无法改变SomeClass

我怎样才能做到这一点?

c# synchronization unit-testing asynchronous task

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

asynchronous ×1

c# ×1

synchronization ×1

task ×1

unit-testing ×1