You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fluent Assertions的ThrowExactlyAsync对派生异常未按预期失败是Bug吗

问题根因

这属于使用方式错误,和Fluent Assertions框架本身无关。

ThrowExactlyAsync是异步方法,返回值为Task类型,你的代码没有对该返回值添加await关键字,导致整个断言逻辑根本没有被实际执行,测试自然不会触发失败。

正确写法

需要给异步断言加上await,同时将对应的测试方法标记为async:

await act.Should().ThrowExactlyAsync<ArgumentException>();

修改后再次运行测试,就会符合预期抛出断言失败的提示,毕竟ArgumentNullException确实不是ArgumentException的精确类型。

补充说明

如果使用的是较早版本的Fluent Assertions,也可以用Wait()同步阻塞的方式执行断言,但更推荐使用await的异步写法,避免出现死锁问题。

内容的提问来源于stack exchange,提问作者anastaciu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:36:02