TestNG:如何测试强制性异常?
2022-09-01 08:39:33
我想写一个TestNG测试,以确保在特定条件下引发异常,如果未引发异常,则测试失败。有没有一种简单的方法可以做到这一点,而不必创建一个额外的布尔变量?
关于这个主题的相关博客文章:http://konigsberg.blogspot.com/2007/11/testng-and-expectedexceptions-ive.html
我想写一个TestNG测试,以确保在特定条件下引发异常,如果未引发异常,则测试失败。有没有一种简单的方法可以做到这一点,而不必创建一个额外的布尔变量?
关于这个主题的相关博客文章:http://konigsberg.blogspot.com/2007/11/testng-and-expectedexceptions-ive.html
@Test(expectedExceptions)
对于最常见的情况很有用:
根据文档,如果抛出 no,测试将失败:expectedException
测试方法应引发的异常列表。如果未引发异常或与此列表中的异常不同,则此测试将被标记为失败。
以下是一些不够用的情况:@Test(expectedExceptions)
在这种情况下,您应该恢复到传统的(测试前)模式:
try {
// your statement expected to throw
fail();
}
catch(<the expected exception>) {
// pass
}
使用批注检查预期的异常。@Test
@Test(
expectedExceptions = AnyClassThatExtendsException.class,
expectedExceptionsMessageRegExp = "Exception message regexp"
)
或者,如果您不想检查异常消息,只需下面就足够了
@Test(expectedExceptions = AnyClassThatExtendsException.class)
这样,您就不需要使用丑陋的 try catch 块,只需在测试中调用异常抛出器方法即可。