Junit - 您应该在beforeclass之前还是之前创建数据库连接?

时间:2015-08-27 21:02:59

标签: java testing junit

进行集成测试时,通常需要连接到数据库并进行一些更改。

这应该在@BeforeClass还是@Before中完成?

3 个答案:

答案 0 :(得分:1)

我使用@BeforeClass来建立数据库连接。 Javadocs for @BeforeClass表示@BeforeClass更适合设置昂贵的资源,例如数据库连接。

  

有时,多个测试需要共享计算成本高昂的设置(例如登录数据库)。虽然这会损害测试的独立性,但有时这是必要的优化。使用@BeforeClass注释public static void no-arg方法会导致它在类中的任何测试方法之前运行一次。

如果您使用@Before,则会为每个Connection方法创建一个新的@Test,这听起来几乎不适用于所有用例。

使用@BeforeClass设置数据库连接。同时使用@AfterClass关闭您的连接。

答案 1 :(得分:0)

标记为@Before的代码在每次测试之前执行,而@BeforeClass在整个测试夹具之前运行一次。如果您的测试类有十个测试,@ Before代码将被执行十次,但@BeforeClass将只执行一次。

因此,为了回答您的问题,您应该使用@BeforeClass,假设您的所有测试用例共享相同的数据库连接。

答案 2 :(得分:0)

如果您希望测试方法都使用相同的Connection,那么您应该使用@BeforeClass方法获取它。如果您希望每个测试方法都使用自己的Connection,那么您应该使用@Before方法获取它。后者更好地将您的测试彼此隔离,但可能存在前者更合适的情况。