[java] setUp()和setUpBeforeClass()之间的区别


Answers

把“BeforeClass”看作你的测试用例的静态初始化器 - 用它来初始化静态数据 - 在你的测试用例中不会改变的东西。 你一定要小心那些不是线程安全的静态资源。

最后,使用“AfterClass”注释方法来清除在“BeforeClass”注释方法中执行的任何设置(除非它们的自我销毁足够好)。

“之前”和“之后”用于单元测试特定的初始化。 我通常使用这些方法来初始化/重新初始化我的依赖关系的模拟。 显然,这个初始化并不是针对单元测试的,而是针对所有单元测试的。

Question

当使用JUnit进行单元测试时,有两个类似的方法setUp()setUpBeforeClass() 。 这些方法有什么区别? 另外, tearDown()tearDownAfterClass()之间有什么区别?

这里是签名:

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}



Javadoc

有时几次测试需要共享昂贵的计算机设置(如登录到数据库)。 虽然这可能会影响测试的独立性,但有时候这是一种必要的优化。 使用@BeforeClass注释public static void no-arg方法会导致它在类中的任何测试方法之前运行一次。 超类的@BeforeClass方法将在当前类的前面运行。




Links



Tags

java java   junit