导致TestNG测试失败?

时间:2013-06-28 18:05:41

标签: java unit-testing testing testng

assert(false);是导致测试失败的可接受方式吗?

另外,如果在尝试访问类的私有方法时抛出 NoSuchMethodException SecurityException ,或者我应该打印,我是否应该导致TestNG测试失败?异常的堆栈跟踪?

@Test
public void getLevelTest() {
    try {
        menu.getClass().getDeclaredMethod("getLevel",int.class,String.class);
    } catch (NoSuchMethodException | SecurityException e) {
        assert(false);
    }
}

3 个答案:

答案 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