Junit5-木星所有测试套件@BeforeAll @AfterAll 不工作
Posted
技术标签:
【中文标题】Junit5-木星所有测试套件@BeforeAll @AfterAll 不工作【英文标题】:Junit5- jupiter all tests suite @BeforeAll @AfterAll not working 【发布时间】:2019-09-09 13:42:12 【问题描述】:before 和 after 方法在 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");
我只想在方法之前和之后运行。
谢谢
【问题讨论】:
【参考方案1】:我可以引用 JUnit 5 migration tipps:
@Before
和 @After
不再存在;请改用@BeforeEach
和@AfterEach
。
@BeforeClass
和 @AfterClass
不再存在;请改用@BeforeAll
和@AfterAll
。
但是这些注释应该在你的测试类中使用。您的套件类中的方法不会以这种方式调用。您应该知道,套件和 JUnit 5 仍在开发中(请参阅 Issue 744)。
【讨论】:
【参考方案2】:您可能需要检查 org.junit.jupiter:junit-jupiter-engine 是否在您的 类路径中。
不过,最新版本的构建工具(带有 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 团队提供了示例项目:
Gradle project with JUnit-Jupiter Maven project with JUnit-Jupiter Maven project migrating from JUnit4 to JUnit5希望这会有所帮助!
【讨论】:
类路径中不是还需要 org.junit.jupiter:junit-jupiter-api 吗? 当然可以,但它是junit-jupiter-engine的传递依赖。因此,如果您使用的是 Maven 或 Gradle 等常规构建工具,则不必担心。此外,现在我们使用org.junit.jupiter:junit-jupiter
依赖项,它嵌入了所有与 jupiter 相关的依赖项,并且更像是您在 Spring-Boot 星系中可能找到的入门。在大多数情况下,不再需要对 jupiter-api 或 jupiter-engine 有显式依赖。
知道了。谢谢!以上是关于Junit5-木星所有测试套件@BeforeAll @AfterAll 不工作的主要内容,如果未能解决你的问题,请参考以下文章