两者的主要区别是什么
-
@Before
and@BeforeClass
- 在JUnit5
@BeforeEach
和@BeforeAll
中
- 在JUnit5
-
@After
和@AfterClass
根据JUnit Api,@Before
用于以下情况:
编写测试时,通常会发现几个测试在运行之前需要创建类似的对象.
而@BeforeClass
可用于建立数据库连接.但@Before
就不能这么做吗?
两者的主要区别是什么
@Before
and @BeforeClass
@BeforeEach
和@BeforeAll
中@After
和@AfterClass
根据JUnit Api,@Before
用于以下情况:
编写测试时,通常会发现几个测试在运行之前需要创建类似的对象.
而@BeforeClass
可用于建立数据库连接.但@Before
就不能这么做吗?
标记为@Before
的代码在每次测试之前执行,而@BeforeClass
在整个测试fixture 之前运行一次.如果您的测试类有10个测试,则@Before
个代码将执行10次,但@BeforeClass
个代码将只执行一次.
一般来说,当多个测试需要共享相同的计算开销较大的设置代码时,使用@BeforeClass
.建立数据库连接属于这一类.您可以将代码从@BeforeClass
移到@Before
,但测试运行可能需要更长的时间.请注意,标记为@BeforeClass
的代码是作为静态初始值设定项运行的,因此它将在创建测试fixture 的类实例之前运行.
在JUnit 5中,标签@BeforeEach
和@BeforeAll
相当于JUnit 4中的@Before
和@BeforeClass
.它们的名字更能指示它们运行的时间,解释得比较松散:"在每个测试之前"和"在所有测试之前一次".