Я делаю сценарии с JUnit4 для проекта.Ожидаемое исключение JUnit4
В одном из тестов мне нужно проверить ожидаемое исключение. С JUnit4 я делаю это, используя аннотацию.
@Test(expected=...)
Теперь проблема заключается в том, что под код в тесте, который выбрасывает исключение, есть некоторые другие аннотации, мне нужно, чтобы проверить, не получить те или иную строчку. Пример Дан:
@Test(expected=NullPointerException.class)
public void nullPointerTest() {
Object o = null;
o.toString();
assertTrue(false);
}
Это тесты проходит, потому что он получает NullPointerException однако, очевидно, ошибка утверждения с asserTrue (ложными) и, таким образом, я хочу, чтобы потерпеть неудачу.
Каков наилучший способ исправить это? Решение этого может быть следующим, но я не знаю, правильно ли это это сделать.
@Test
public void nullPointerTest2() {
boolean caught = false;
try{
Object o = null;
o.toString();
}
catch(NullPointerException e)
{
caught = true;
}
assertTrue(caught);
assertTrue(false);
}
Это второе испытание не соответствует прогнозу.
Почему вы делаете 'assertTrue (false)'? Или это стоит здесь для некоторых ваших реальных тестов? Этот «реальный» код зависит от кода перед ним, который выдает «NullPointerException»? – rgettman
Я не уверен, почему вы хотели бы это сделать. Он пахнет плохим дизайном теста. Каждый тест должен проверять только на одно. – Aurand
Я предлагаю вам разделить это на два отдельных теста. –