进行集成测试时,通常需要连接到数据库并进行一些更改。
这应该在@BeforeClass还是@Before中完成?
答案 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
方法获取它。后者更好地将您的测试彼此隔离,但可能存在前者更合适的情况。