我有一些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's phone
Assert.assertEquals("123456789", user.getPhone());
}
}
问题是junit的assert关键字抛出了一个Error
--而不是Exception
。
try-with- Error
是否会“捕获”关闭并调用close方法?
*在try-with-resources documentation中找不到答案。
https://stackoverflow.com/questions/40379293
复制相似问题