我在使用 Junit 5 时看到一些不需要的行为。 我有以下结构:
website
config
BaseTest.java
tests
package a
Test 1
Test 2
package b
Test 3
Test 4
BaseTest
包含一个带有一些一次性设置的 @BeforeAll
和一个 @BeforeEach
和 @AfterEach
在每次测试前后设置和拆卸一些数据。
每个测试都从 BaseTest
扩展而来。
我习惯于使用 Junit 4 的方式是 BaseTest
中的 @BeforeAll
只在一次执行所有包中的所有测试时运行一次。但是,对于 Junit 5,当运行来自另一个包的测试时,@BeforeAll
似乎会重复。为了澄清,我得到这样的东西:
BeforeAll
BeforeEach
Package 1 Test 1
AfterEach
BeforeEach
Package 1 Test 2
AfterEach
AfterAll
BeforeAll
BeforeEach
Package 2 Test 1
AfterEach
BeforeEach
Package 2 Test 2
AfterEach
AfterAll
提前致谢! 问候
最佳答案
The way I am used to with Junit 4 is that the
@BeforeAll
inBaseTest
is only run once when executing all the tests in all the packages at once.
这是不正确的。
我使用 JUnit 4 注释重新创建了您的示例,结果如下:
BeforeClass
Before
Package 1 Test 1
After
Before
Package 1 Test 2
After
AfterClass
BeforeClass
Before
Package 2 Test 1
After
Before
Package 2 Test 2
After
AfterClass
因此,所讨论的行为在 JUnit 4 和 JUnit Jupiter 中是相同的。
关于java - Junit 4 执行顺序与 Junit 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50366000/