Junit5- jupiter 所有测试套件@BeforeAll @AfterAll 不工作

Junit5- jupiter all tests suite @BeforeAll @AfterAll not working

前后方法在 JUnitPlatform 中不起作用。

代码如下

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.runner.RunWith;

@RunWith(JUnitPlatform.class)
@SelectClasses({
        MyControllerTest.class
})
public class AdminAppTest {

    @BeforeAll
    public static void setUp() {
        System.out.println("setting up");
    }

    @AfterAll
    public static void tearDown() {
        System.out.println("tearing down");
    }
}

我只想运行方法前后。

谢谢

我可以引用 JUnit 5 migration tipps:

@Before@After 不再存在;使用 @BeforeEach@AfterEach 代替。

@BeforeClass@AfterClass 不再存在;使用 @BeforeAll@AfterAll 代替。

但是这些注释应该在您的测试中使用 class。您的套件 class 中的方法将不会以这种方式调用。您应该知道套件和 JUnit 5 仍在开发中(请参阅 Issue 744)。

您可能需要检查 org.junit.jupiter:junit-jupiter-engine 在您的 classpath.

但是,最新版本的构建工具(带有 surefire 插件的 Maven、Gradle、Eclipse、IntelliJ 等)支持 junit-platform。因此,您不需要将 JUnit4 与 backward-compatible 运行ner.

一起使用

通常你可以是以下几种情况:

  • 正在创建新项目,在这种情况下,您可以直接开始使用 JUnit-Jupiter(并且类路径中没有 JUnit4)

  • 正在将项目从 JUnit4 迁移到 JUnit5。在这里您将需要两个引擎:JUnit-Vintage,它涵盖了使用 JUnit4 API 的现有测试的回溯兼容性,以及 JUnit-Jupiter,它提供了更多的灵活性,包括扩展的组合(具有 Spring、Mockito 和参数化测试功能同时进行,例​​如)

使用 JUnit4 运行ner 进行 运行 JUnit-Jupiter 测试确实是一个极端情况,当您受到环境(构建工具 and/or IDE) 您无法更改。

有关更多详细信息,示例项目由 JUnit 团队提供:

希望对您有所帮助!