Итак, я работаю над проектом, и мне нужно проверить, не улавливает ли мой метод ParseException
, когда это происходит. Вот как метод, который я должен проверить выглядит следующим образом:Как проверить JUnit ParseException
public void convertToModel(final BuildStone bs, final TextBuildStone model) {
try {
model.setBeginDateRange(ProjectDateConverter.projectDateToCalendarDefaultMin(bs.getFromDate(), true));
} catch (final ParseException e) {
SystemContext.getLogger().warning(
this,
"treatGeneralData",
"Date not converted: {0}, BeginDate set at MinDate",
bs.getFromDate());
model.setBeginDateRange(CalendarConstants.getMinDate());
}
Так что я должен проверить, когда этот метод ловит ParseException
.
Метод, который бросает ParseException является projectDateToCalendarDefaultMin
, вот код этого метода:
public static Calendar projectDateToCalendarDefaultMin(final BigDecimal dateValue, final boolean useMinDate) throws ParseException {
return dateValue == null ? ProjectDateConverter.projectDateStringToCalendar(null, useMinDate, false) : ProjectDateConverter
.projectDateStringToCalendar(dateValue.toString(), useMinDate, false);
Метод, который бросает ParseException называется projectDateStringToCalendar
. Вот как это выглядит как:
private static Calendar projectDateStringToCalendar(final String dateValue, final boolean useMinDate, final boolean useMaxDate)
throws ParseException {
if (useMinDate && useMaxDate) {
throw new IllegalArgumentException("useMinDate and useMaxDate may not be set as true ");
}
if (StringUtils.isEmpty(dateValue)) {
if (useMinDate) {
return CalendarConstants.getMinDate();
} else if (useMaxDate) {
return CalendarConstants.getMaxDate();
} else {
return null;
}
}
...
final GregorianCalendar gc = new GregorianCalendar();
gc.setTime(new SimpleDateFormat("yyyyMMdd").parse(dateValue));
return gc;
}
Так вот где ParseException
наконец брошен, в методе parse()
. ParseException
от text.parse
пакета и метод синтаксического анализа выглядит следующим образом:
public Date parse(String source) throws ParseException
{
ParsePosition pos = new ParsePosition(0);
Date result = parse(source, pos);
if (pos.index == 0)
throw new ParseException("Unparseable date: \"" + source + "\"" ,
pos.errorIndex);
return result;
}
То, что я уже пытался сделать, это установить bs.getFromDate
к нулю, но тест всегда будет красным. Я использовал @Test(expected: ParseException.class)
аннотацию в своем тесте, но я просто не могу сделать ее зеленой. Возможно, bs.getFromDate
не является правильным значением, которое анализируется?
Есть ли у кого-нибудь другая идея, как сделать эту тестовую работу? Заранее спасибо!
Вы бы ввели метод JUnit Test? Может быть, какой-то другой Expcetion происходит до него? – darijan