java - Junit 4 执行顺序与 Junit 5

标签 java junit5

我在使用 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 in BaseTest 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/

相关文章:

java - java多线程中的wait函数

java - 停止 hiveserver2 的正确方法是什么?

java - 替换已弃用的 Java 方法

java - ExecutorService 的 future 任务并未真正取消

java - 我在下面的代码中收到 org.junit.platform.commons.PreconditionViolationException

测试中的 JUnit5 断言计数

java - JPanel 设置

java - 带有注释为 `@RegisterExtension` 的字段的 JUnit 5 测试在 Kotlin 中不起作用

java - 如何在 Junit 5 *before* Spring 测试上下文加载之前获得回调?

java - Spring Boot测试嵌入MongoDB : Combine MockMVC with @DataMongoTest