所以我有一个名为FoobarException
的自定义异常,从中我创建了一个新的异常FooException : FoobarException
以下引发了一个FooException
Assert.Throws<FoobarException>(() => a.DoFoo(123));
然而断言失败是因为它期望抛出FooException
。不是&#34; FooException&#34;还有一个FoobarException?
答案 0 :(得分:5)
不,不是XUnit检查它的方式。要亲眼看看,请查看代码:
如果要捕获任何异常或派生类型,则需要使用ThrowsAny
重载。
Assert.ThrowsAny<Foobar>(() => a.DoFoo(123));
只是出于“最佳实践”的问题,在创建异常时,总是以“异常”一词结束异常的名称。您上面的例外变为FoobarException
,这清楚地说明了该类的用途。这是C#编码最佳实践,是非常合理的建议。