如何在Xunit.net中捕获继承的异常

本文关键字:继承 异常 Xunit net | 更新日期: 2023-09-27 18:05:25

所以我有一个自定义异常称为FoobarException,并从我创建了一个新的异常FooException : FoobarException下面抛出一个FooException

Assert.Throws<FoobarException>(() => a.DoFoo(123));

然而断言失败,因为它预计会抛出FooException。是不是一个"FooException"也是一个foobareexception ?

如何在Xunit.net中捕获继承的异常

不,不是以XUnit检查它的方式。要自己查看,请看下面的代码:

XUnit Assert Exceptions

如果您想捕获任何异常或派生类型,那么您需要使用ThrowsAny重载。

Assert.ThrowsAny<Foobar>(() => a.DoFoo(123));

只是为了"最佳实践",当创建异常时,总是以单词"exception"结束异常的名称。上面的异常变成了FoobarException,这就清楚了这个类的用途。