【发布时间】:2018-12-31 17:29:01
【问题描述】:
我对这段代码有点困惑(这是一个示例):
public async Task Fail()
{
await Task.Run(() => { throw new Exception(); });
}
[Test]
public async Task TestFail()
{
Action a = async () => { await Fail(); };
a.ShouldThrow<Exception>();
}
代码没有捕捉到异常,失败了
预计会抛出 System.Exception,但没有出现异常 扔了。
我确定我遗漏了一些东西,但文档似乎表明这是要走的路。一些帮助将不胜感激。
【问题讨论】:
-
好的,谢谢。错过了。但不能解决问题。
-
问题是什么?
-
@stuartd 实际上,不,在测试异步方法时需要异步。 ShouldThrow 不是异步的。这可能是一个原因吗?
-
您的问题是
Action- 这会创建一个async void方法。正确的异步委托等价物是Func<Task>。 -
Fail没有理由调用Task.Run,它只会抛出异常,TestFail没有理由有匿名方法,你可以使用Fail委托而不将其包装在另一个不做任何事情的方法调用中。
标签: c# async-await nunit fluent-assertions