C# NUnit 3.X.X异步测试
我正在尝试使用NUnit 3.12.0.0对异步任务进行单元测试。问题是我一直得到以下信息:消息:异步测试方法必须具有非泛型任务返回类型,当没有预期结果且我的测试失败时。下面的代码实际上使用的是Visual Studio 2017和旧版本的nUnit 根据我的理解,新的nUnit框架需要返回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
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()
{ /* ... */ }