2013-06-28 2 views
2

Действительно ли assert(false); является приемлемым способом для отказа теста?Вызывает ли тест TestNG потерпеть неудачу?

Кроме того, я должен даже быть причиной тест TestNG потерпеть неудачу, если NoSuchMethodException или SecurityException выбрасывается при попытке получить доступ к частным методам класса, или я должен просто напечатать трассировки стека, за исключением в?

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

ответ

2

В этом случае с помощью assert(false) означает, что вы потеряете информацию о том, что было брошено исключение. TestNG не знает, что исключение имеет какое-либо отношение к неудаче теста.

Вы не должны ничего утверждать или поймать что-нибудь:

@Test 
public void getLevelTest() throws Exception { 
     menu.getClass().getDeclaredMethod("getLevel",int.class,String.class); 
} 

Тест рамки захватит исключение и печать трассировки стека в результатах испытаний.

3

Другой способ справиться с ожидаемым исключения в рамках TestNG является:

@Test(expectedExceptions = {NoSuchMethodException.class, SecurityException.class}) 

Если тест аннотированный с этим сталкивается любой из исключений, он будет считаться пропуском.

2

Использовать assertTrue() и assertFalse(), также см. old answer на этой вершине.

Смежные вопросы