У меня есть простой тест, настроенный в JUnit, в соответствии с
public void testGetBar() throws MyException{
Foo f = new Foo();
f.setup();
assertEquals(new Bar("1234"), f.getBar());
}
Предположим, getBar()
выбросил MyException
: JUnit отмечает это как тест «по ошибке», и я замечаючто я облажался метод.Ага, юнит-тестирование работает!Однако у меня нет возможности узнать, что не так с моим объектом Foo, который заставил его выбросить, когда я попытался getBar()
на нем, не возвращаясь назад и, например, не выполняя тест через отладчик или не добавляя оператор записи в журнал.Все говорят, что это плохая идея - ловить исключения в ваших тестах JUnit, поэтому кажется, что делать это не стоит:
try{
assertEquals(new Bar("1234"), f.getBar());
} catch(MyException e) {
log.error(f.toString());
throw e;
}
, но это все, что я могу придумать.Нет ли в JUnit-y краткого сообщения о том, что «когда в этом тесте есть исключение, выйдите из этого, того и другого состояния объекта (каким-либо образом)», чтобы можно было легко определить, где что-то пошло не так?