【问题标题】:NUnit doesn't wait for the async task to completeNUnit 不等待异步任务完成
【发布时间】:2017-02-22 15:26:14
【问题描述】:

我有一个非常简单的 NUnit 测试,它调用了一个异步方法。

当然,测试正在等待,就像它应该的那样:

public async void Test()
{
    var controller = new Controller(mockService.Object);

    var model = new MyObject
    {
        Address = "12.12.12.12",
        Password = "123456",
        Username = "John Foo"
    };

    var res = await controller.Add(model);
}

当我运行测试时,它不会等待 Add 方法完成,即使我告诉它这样做 (await)

【问题讨论】:

  • 只要记住async void 是“一劳永逸”。

标签: c# asp.net unit-testing testing asynchronous


【解决方案1】:

您需要更新 Test 以返回 async Task

public async Task Test() {
    var controller = new Controller(mockService.Object);

    var model = new MyObject
    {
        Address = "12.12.12.12",
        Password = "123456",
        Username = "John Foo"
    };

    var res = await controller.Add(model);
}

【讨论】: