assert(false);
是导致测试失败的可接受方式吗?
另外,如果在尝试访问类的私有方法时抛出 NoSuchMethodException 或 SecurityException ,或者我应该打印,我是否应该导致TestNG测试失败?异常的堆栈跟踪?
@Test
public void getLevelTest() {
try {
menu.getClass().getDeclaredMethod("getLevel",int.class,String.class);
} catch (NoSuchMethodException | SecurityException e) {
assert(false);
}
}
答案 0 :(得分:3)
在TestNG框架中处理预期异常的另一种方法是:
@Test(expectedExceptions = {NoSuchMethodException.class, SecurityException.class})
如果用此注释的测试遇到任何异常,它将被视为通过。
答案 1 :(得分:2)
在这种情况下,使用assert(false)
表示您丢失了有关抛出异常的信息。 TestNG不知道该异常与测试失败有关。
你不应该断言任何东西或抓住任何东西:
@Test
public void getLevelTest() throws Exception {
menu.getClass().getDeclaredMethod("getLevel",int.class,String.class);
}
测试框架将捕获异常并在测试结果中打印堆栈跟踪。
答案 2 :(得分:2)
使用assertTrue()
和assertFalse()
,另请参阅此{top}上的old answer。