2012-08-14 24 views
4

在我的测试中,我正在使用连接到数据库,我打开连接@Before 并关闭它在@After最后在Java Junit 4中

我的问题是如果在测试期间抛出异常会发生什么?

我该如何关闭连接?

我正在寻找相当于finally的东西,它位于try和catch块之后。

回答

6

@After会做你想做的。根据其documentation

即使Before或Test方法抛出异常,所有@After方法都保证运行。

(这直觉对我来说很有意义,因为我想象中的测试方法,裹在try块,将捕获任何异常,将其转换为一个测试失败。因此,测试失败,那么拆机块运行。 )

请注意,如果引发了Error,它不会指定该方法将运行。通常,虽然您只使用@After方法来维护测试状态,但这不会造成问题,因为在这种情况下无法运行更多测试。如果确实需要使用测试中必须清理的任何资源(例如本机挂钩),那么最好在测试方法本身的try-finally块中执行此操作。