Я получил следующий код:Байтмен JUnit Runner - невозможно, чтобы вызвать IOException на авто-замкнутый InputStream # близко
Collection<String> errors = ...;
try (InputStream stream = My.class.getResourceAsStream(resource)) {
// do stuff
}
catch(IOException ex) {
errors.add("Fail");
}
Я пытаюсь с Байтмен JUnit Runner, чтобы вызвать IOException, когда (действительный) входной поток даю якобы закрыт:
@RunWith(BMUnitRunner.class)
public class MyTest {
private My my = new My();
@BMRule(
name = "force_read_error",
targetClass = "java.io.InputStream",
targetMethod = "close()",
action = "throw new IOException(\"bazinga\")"
)
@Test
public void catches_read_error() throws IOException {
Collection<String> errors = my.foo("/valid-resource-in-classpath");
assertThat(errors).containsExactly("Fail");
}
}
Мой тест не: ошибки всегда пусто, что означает Байтмен правило, очевидно, не выполняется (это хорошо загружен агентом, так что я не понимаю, что происходит).
Как я могу вызвать метод IOException при закрытии, вызванный через try-with-resources?