之间的主要区别是什么
@Before
和@BeforeClass
- 在 JUnit 5
@BeforeEach
和@BeforeAll
- 在 JUnit 5
@After
和@AfterClass
根据 JUnit Api @Before
用于以下情况:
在编写测试时,通常会发现多个测试需要在运行前创建相似的对象。
而 @BeforeClass
可用于建立数据库连接。但是不能 @Before
做同样的事情吗?
原文由 Evgenij Reznik 发布,翻译遵循 CC BY-SA 4.0 许可协议
标记为
@Before
的代码在每次测试之前执行,而@BeforeClass
在整个测试夹具之前运行一次。如果你的测试类有十个测试,@Before
代码将被执行十次,但是@BeforeClass
将只执行一次。通常,当多个测试需要共享相同的计算量大的设置代码时,您可以使用
@BeforeClass
。建立数据库连接属于这一类。您可以将代码从@BeforeClass
移动到@Before
,但您的测试运行可能需要更长的时间。请注意,标记为@BeforeClass
的代码作为静态初始化程序运行,因此它将在创建测试夹具的类实例之前运行。In JUnit 5 , the tags
@BeforeEach
and@BeforeAll
are the equivalents of@Before
and@BeforeClass
in JUnit 4. Their names are a bit more指示它们何时运行,松散地解释为:“在每次测试之前”和“在所有测试之前一次”。