Поскольку отражение - это деталь реализации тестируемого метода, вам не нужно специально его обслуживать. Чтобы проверить этот метод, просто выполните:
@Test
public void shouldNotThrowException() throws Exception {
testSubject.convertTo("JPY", 100);
}
Если выброшено CurrencyConverterException
, ваш тест не пройден.
Или, больше простоты:
@Test
public void shouldNotThrowException() {
try {
testSubject.convertTo("JPY", 100);
} catch(CurrencyConverterException e) {
fail(e.getMessage());
}
}
Обратите внимание: когда вы ловите исключение и выбрасываете новое, вы всегда должны связывать исходное исключение в новом. Например:
} catch (IllegalAccessException e) {
throw new CurrencyConverterException(e);
}
Редактировать : Вы ищете этот шаблон вместо? Как гарантировать, что исключение выдается. Два варианта:
// will pass only if the exception is thrown
@Test(expected = CurrencyConverterException.class)
public void shouldThrowException() {
testSubject.doIt();
}
или
@Test
public void shouldThrowException() {
try {
testSubject.doIt();
fail("CurrencyConverterException not thrown");
} catch (CurrencyConverterException e) {
// expected
// use this variant if you want to make assertions on the exception, e.g.
assertTrue(e.getCause() instanceof IllegalAccessException);
}
}