断言一个异常或另一个异常

本文关键字:异常 另一个 一个 断言 | 更新日期: 2023-09-27 18:28:16

假设我有测试方法A、B、C。当我启动它们时,测试方法B抛出SQLiteException,一切都是绿色的

Assert.Throws<SQLiteException>(() => sql.Select(selectFrom + "table_name"));

但是,当我启动ONLY测试方法B时,它在SQLiteException之前抛出ArgumentException,测试失败。

问题是:如何断言抛出了一个或另一个异常?

我说的是类似的东西

Assert.Throws<SQLiteException>(() => sql.Select(selectFrom + "table_name")).OR.Throws<ArgumentException>()

断言一个异常或另一个异常

try {
    somethingThatShouldThrowAnAcception();
    Assert.Fail(); // If it gets to this line, no exception was thrown
} catch (GoodException) { }

您应该能够根据自己的喜好调整这种方法,包括想要捕捉的特定异常。如果你只期望某些类型,用完成捕获块

} catch (GoodException) {
} catch (Exception) {
    // don't want this exception
    Assert.Fail();
}

记住,你不能做这个

try {
    somethingThatShouldThrowAnAcception();
    Assert.Fail();
} catch (Exception) { }

因为Assert.Fail()通过抛出AssertionException来工作。

你也可以做这个

try {
    somethingThatShouldThrowAnAcception();
    Assert.Fail("no exception thrown");
} catch (Exception ex) {
    Assert.IsTrue(ex is SpecificExceptionType);
}
相关文章: