У меня есть тест, в котором я написал большую часть необходимых мне модульных тестов, но есть один, в котором я хочу протестировать первые биты логики. Меня не волнует, что происходит в остальной части метода, пока метод вызывается, но поскольку SUT терпит неудачу с NPE из-за отсутствия дальнейших насмешек, тест терпит неудачу прежде, чем я доберусь до своего утверждения.
Существует ли чистый способ подтверждения вызова метода и игнорирования всех исключений, происходящих после этого? Возможно, какое-то блокирующее поведение при попадании в метод и прерывании/прохождении теста после этого?
Я думал, что могу написать when(mock.methodIAmInterestedIn(any)).thenThrow(new RuntimeException("verified!"))
, а затем просто утверждать, что получаю правильное исключение (однако оно будет заключено в другое). Это, вероятно, сработает, но это немного нечисто: скрывает то, что я действительно хочу проверить.
@Test
public void should_load_using_filename_in_config() {
loader = new OrgUnitLoader(config, dbSupport.mockServices);
config = mock(TestConfiguration.class);
/* further mocking of the config needed if I am not to get an NPE */
when(dao.orgUnitsAreLoaded()).thenReturn(false);
// call the actual method
loader.loadOrgUnits();
verify(config, times(1)).getString(ORG_UNIT_DATA_FILE);
}
Например, можно ли использовать CountdownLatch
?