Короткий ответ
Проверьте код, который вы действительно хотите проверить.
Некоторая информация
Код в вашем первом блоке кода находится вни один способ не проверяется кодом в вашем примере модульного тестаЯ предполагаю, что, поскольку он выглядит как код Java, а вопрос помечен как вопрос Java, код в первом блоке кода фактически находится где-то в методе.Этот метод необходимо объединить, чтобы получить тестовое покрытие в блоке перехвата исключений в этом методе.
Например:
public void IHateToTellPeopleMyMethodName(final String[] args)
{
try
{
fillParameters(args);
}
catch (ArgumentException e)
{
logger.error(e.getMessage(), e);
return;
}
}
Чтобы получить тестовое покрытие блока перехвата в *Метод 1014 *, вы должны протестировать метод IHateToTellPeopleMyMethodName
в своем модульном тесте.
Этот метод модульного тестирования ничего не делает для тестирования метода IHateToTellPeopleMyMethodName
, поскольку он не вызывает метод IHateToTellPeopleMyMethodName
.
@Test
public void testThatInNoWayTestsTheIHateToTellPeopleMyMethodNameMethod()
{
String[] args = { "...", "...", "...", "..." };
try
{
testInstance.fillParameters(args);
fail("expected exception not thrown");
}
catch (Throwable ex)
{
assertTrue(e instanceof ArgumentException);
}
}
В отличие от приведенного выше кода модульного теста, этот модульный тест охватывает метод IHateToTellPeopleMyMethodName
.
@Test
public void testTheIHateToTellPeopleMyMethodNameMethod()
{
String[] args = { "...", "...", "...", "..." };
testInstance.IHateToTellPeopleMyMethodName(args);
verify(mockLogger).error(
eq(EXPECTED_MESSAGE_TEXT),
any(ArgumentException.class));
}
Редактировать примечание
Мои плохие, any()
потребностиclass
объект в качестве параметра, а не имя класса.