【问题标题】:NUnit 3.X.X async testNUnit 3.X.X 异步测试
【发布时间】:2019-08-28 19:27:40
【问题描述】:

我正在尝试使用 NUnit 3.12.0.0 对异步任务进行单元测试。问题是我不断收到以下信息:消息:当没有预期结果时,异步测试方法必须具有非泛型任务返回类型并且我的测试失败。下面的代码实际上适用于 Visual Studio 2017 和旧版本的 nUnit。

据我了解,新的 nUnit 框架需要返回 TaskTask<T>

这是我的测试功能

[Test]
public async Task<string> Login()
{
    var url = "http://localhost:xxxx/login";
    object[] jsonBody = { "{\"username\":\"devTeam@xxxxxxxxx.com\",\"password\":\"xxxx\"}" };

    RestRequestResponse<RestResponse> result = await HttpRestUtil.ExecuteCompleteRestRequest<RestResponse>(url, null, jsonBody, Method.POST);
    Assert.IsNotNull(result);
    Assert.IsNotNull(result.headers[0].Value.ToString());
    return result.headers[0].Value.ToString();
}

【问题讨论】:

    标签: c# multithreading unit-testing asynchronous async-await


    【解决方案1】:

    我找到了我的问题的答案。答案来自 NUnit 文档,该文档声明如下:

    针对 .Net 4.0 或更高版本的测试方法可能会被标记为异步和 NUnit 在记录结果之前会等待方法完成 并继续下一个测试。异步测试方法必须返回 Task if 不返回任何值,如果返回类型为 T 的值,则返回 Task。

    如果测试方法返回值,则必须传入 测试属性的 ExpectedResult 命名参数。这预期 将检查返回值是否与 测试方法。

    这是一个例子:

    // Async test with an expected result
    [Test(ExpectedResult = 4)]
    public async Task<int> TestAdd()
    {
        await ...
        return 2 + 2;
    }
    
    
    // A simple async test
    [Test]
    public async Task AddAsync()
    { /* ... */ }
    

    【讨论】:

      猜你喜欢
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      • 2012-01-31
      • 1970-01-01
      • 2017-05-05
      相关资源
      最近更新 更多