Testując swoją metodę nie będziesz przecież zaglądał do każdej implementacji AutoClosable i sprawdzał wszystkich możliwych powodów błędów. closeAll powinna minimum przechwycić i zalogować wyjątek, ale kontynuować petlę. Ewentualnie w przypdaku niektórych wyjątków spróbować naprawić stan i ponowić zamykanie (ale to raczej nie zbyt dobre podejście)
Przykładowy test
@Test
public void closeAll_exceptionThrownByClose_shouldContinueClosing() throws Exception {
//given
List<AutoCloseable> resources = Arrays.asList(mock(AutoCloseable.class),
mock(AutoCloseable.class),
mock(AutoCloseable.class)
);
when(resources.get(1)).thenThrow(new Exception());
//when
Utils.closeAll(resources);
//then
verify(resources.get(0), atLeastOnce()).close();
verify(resources.get(1), atLeastOnce()).close();
verify(resources.get(2), atLeastOnce()).close();
}
PS: closeAll powinna raczej przyjmować List<T> zamiast ArrayList<T>.