本文介绍了如何使用NUnit(或可能使用其他框架)测试异步方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个ASP.NET Web API应用程序,其ApiController具有异步方法,返回 Task<> 对象并标有异步关键字。

I have an ASP.NET Web API application, with an ApiController that features asynchronous methods, returning Task<> objects and marked with the async keyword.

public class MyApiController : ApiController
{
    public async Task<MyData> GetDataById(string id)
    {
        ...
    }
}

如何为ApiController的异步方法编写NUnit测试?如果我需要使用其他测试框架,也可以使用。我一般对.NET单元测试还很陌生,所以我对学习最佳实践很感兴趣。

How can I write NUnit tests for the ApiController's asynchronous methods? If I need to use another testing framework I'm open for that too. I'm fairly new to .NET unit testing in general, so I'm interested in learning best practices.

推荐答案

对我来说,NUnit 2.6中没有内置支持来测试返回Tasks的异步方法。我现在可以看到的最佳选择是使用Visual Studio自己的UnitTesting框架或xUnit.net 。

It seems to me there is no support built into NUnit 2.6 for testing async methods returning Tasks. The best option I can see right now is to use Visual Studio's own UnitTesting framework or xUnit.net as both support asynchronous tests.

借助Visual Studio UnitTesting框架,我可以编写这样的异步测试:

With the Visual Studio UnitTesting framework I can write asynchronous tests like this:

using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
public class TestAsyncMethods
{
    [TestMethod]
    public async Task TestGetBinBuildById()
    {
         ...
         var rslt = await obj.GetAsync();
         Assert.AreEqual(rslt, expected);
    }
}

这篇关于如何使用NUnit(或可能使用其他框架)测试异步方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 06:48
查看更多