4

之前和之后的方法在 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");
    }
}

我只想在方法之前和之后运行。

谢谢

4

2 回答 2

2

我可以引用 JUnit 5迁移提示

@Before并且@After不再存在;使用@BeforeEachand@AfterEach代替。

@BeforeClass并且@AfterClass不再存在;使用@BeforeAlland@AfterAll代替。

但是这些注释应该在你的测试类中使用。您的套件类中的方法不会以这种方式调用。您应该知道套件和 JUnit 5 仍在进行中的事实(请参阅问题 744)。

于 2019-04-19T22:02:06.907 回答
1

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

但是,最新版本的构建工具(带有 surefire 插件的 Maven、Gradle、Eclipse、IntelliJ 等)支持junit-platform。因此,您不需要将 JUnit4 与向后兼容的运行器一起使用。

通常你会出现以下几种情况:

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

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

当您受到无法更改的环境(构建工具和/或 IDE)的限制时,使用 JUnit4 运行程序运行 JUnit-Jupiter 测试确实是一种极端情况。

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

希望这可以帮助 !

于 2019-07-09T11:57:44.383 回答