我想知道如何在 C# 单元测试中断言异步方法是否抛出异常。我可以使用 Visual Studio 2012 中的 Microsoft.VisualStudio.TestTools.UnitTesting
编写异步单元测试,但是还没有弄清楚如何测试异常。我知道 xUnit.net 也支持以这种方式编写异步测试方法,但我还没有尝试过该框架。
以下代码为测试系统定义了一个示例:
using System;
using System.Threading.Tasks;
public class AsyncClass
{
public AsyncClass() { }
public Task<int> GetIntAsync()
{
throw new NotImplementedException();
}
}
这段代码片段定义了一个名为TestGetIntAsync
的测试,用于测试AsyncClass.GetIntAsync
。在这里,我需要输入来完成断言,即GetIntAsync
是否会抛出异常:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Threading.Tasks;
[TestClass]
public class TestAsyncClass
{
[TestMethod]
public async Task TestGetIntAsync()
{
var obj = new AsyncClass();
// How do I assert that an exception is thrown?
var rslt = await obj.GetIntAsync();
}
}
如果需要或者你认为其他单元测试框架比Visual Studio更好,例如xUnit.net,那么可以自由地使用它们。