假设我有测试方法A,B,C。 当我全部启动时,测试方法B抛出SQLiteException,一切都是绿色的,没问题。
Assert.Throws<SQLiteException>(() => sql.Select(selectFrom + "table_name"));
但是,当我只启动测试方法B时,它会在SQLiteException之前抛出ArgumentException并且测试失败。
问题是:如何断言抛出一个或另一个异常?
我在说这样的事情
Assert.Throws<SQLiteException>(() => sql.Select(selectFrom + "table_name")).OR.Throws<ArgumentException>()
答案 0 :(得分:1)
try {
somethingThatShouldThrowAnAcception();
Assert.Fail(); // If it gets to this line, no exception was thrown
} catch (GoodException) { }
您应该能够根据自己喜欢的方式调整此方法,包括您想要捕获的特定异常。如果您只期望某些类型,请使用以下命令关闭catch块:
} 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);
}