Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NUnit 3.X.X异步测试_C#_Multithreading_Unit Testing_Asynchronous_Async Await - Fatal编程技术网

C# NUnit 3.X.X异步测试

C# NUnit 3.X.X异步测试,c#,multithreading,unit-testing,asynchronous,async-await,C#,Multithreading,Unit Testing,Asynchronous,Async Await,我正在尝试使用NUnit 3.12.0.0对异步任务进行单元测试。问题是我一直得到以下信息:消息:异步测试方法必须具有非泛型任务返回类型,当没有预期结果且我的测试失败时。下面的代码实际上使用的是Visual Studio 2017和旧版本的nUnit 根据我的理解,新的nUnit框架需要返回Task或Task 这是我的测试函数 [Test] public async Task<string> Login() { var url = "http://localhost:xxxx

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

根据我的理解,新的nUnit框架需要返回
Task
Task

这是我的测试函数

[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();
}
[测试]
公共异步任务登录()
{
变量url=”http://localhost:xxxx/login";
对象[]jsonBody={“{\”用户名\”:“devTeam@xxxxxxxxx.com\“,\”密码\“:\”xxxx\“}”};
RestRequestResponse result=wait-HttpRestUtil.executecompletestrestrequest(url,null,jsonBody,Method.POST);
Assert.IsNotNull(结果);
Assert.IsNotNull(result.headers[0].Value.ToString());
返回result.headers[0].Value.ToString();
}

我找到了问题的答案。答案来自NUnit文件,其中说明了以下内容:

针对.Net 4.0或更高版本的测试方法可以标记为异步和 NUnit将在记录结果之前等待方法完成 接着进行下一个测试。异步测试方法必须在以下情况下返回任务 不返回值,如果返回类型为T的值,则返回任务

如果测试方法返回值,则必须传入 测试属性的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()
{ /* ... */ }
//具有预期结果的异步测试
[测试(预期结果=4)]
公共异步任务TestAdd()
{
等待。。。
返回2+2;
}
//一个简单的异步测试
[测试]
公共异步任务AddAsync()
{ /* ... */ }