У меня есть некоторые тесты junit, которые создают некоторые ресурсы, которые также должны быть закрыты.
Один из способов реализации этой логики - использовать подход @Before
и @After
.
Я сделал, чтобы инкапсулировать создание в некоторый класс утилиты для повторного использования. Например:
class UserCreatorTestUtil implements AutoClosable {
User create() {...}
void close() {...}
}
Все дело в том, что объект закрывается, вместо того, чтобы забывать закрыть его в @After
.
Использование должно быть:
@Test
void test() {
try (UserCreatorTestUtil userCreatorTestUtil = new UserCreatorTestUtil()) {
User user = userCreatorTestUtil.create();
// Do some stuff regarding the user phone
Assert.assertEquals("123456789", user.getPhone());
}
}
Проблема заключается в том, что ключевое слово junit assert выбрасывает Error
- not Exception
.
Будет ли try-with-resource "улавливать" Error
и вызывать метод close?
* Не удалось найти ответ в документации try-with-resources.