【问题标题】:Difference between junit-vintage-engine and junit-jupiter-engine?junit-vintage-engine 和 junit-jupiter-engine 之间的区别?
【发布时间】:2020-03-30 06:35:46
【问题描述】:

这是一个双重问题。

  1. junit-vintage-enginejunit-jupiter-engine 有什么区别?
  2. SpringBoot 入门项目附带 junit-vintage-engine 的排除项。是强制使用junit-jupiter-engine吗?

下面是我从Spring Initializr生成的SpringBoot项目的依赖:

        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

【问题讨论】:

    标签: java spring-boot junit spring-boot-test


    【解决方案1】:

    junit-vintage-engine 用于运行 JUnit 4 测试; junit-jupiter-engine 用于 JUnit 5 测试。

    大概因为您将只为新的 Spring Boot 项目编写 JUnit 5 测试,因此不需要老式引擎,因此 POM 中的默认依赖项排除。

    参考:

    https://junit.org/junit5/docs/current/user-guide

    【讨论】:

      【解决方案2】:

      答案:1.根据阅读,我发现了一些不同之处,例如,

      junit-vintage-engine:

      • 用于 Junit-4 测试。
      • 用于调用核心类和注解。
      • 'Assert' 提供用于执行测试的断言方法。
      • “假设”用于放置假设。
      • 使用 @Ignore、@Before 等注释...

      junit-jupiter-engine :

      • 用于 Junit-5 测试
      • 提供一些有助于编写测试用例的 API。
      • “Assertions”提供了用于测试的断言条件的实用方法。
      • 'Assumptions' - 实用方法基于假设提供条件。
      • 更改注解名称的位,如@Disable、@BeforeAll、@BeforeEach 等...

      答案:2. 我也很惊讶他们仍然提供较旧的老式库,可能有一些我直到现在还不知道的原因,但根据目前的使用情况,我们会在下次更新。

      祝你有个愉快的一天!!! :)

      【讨论】:

        【解决方案3】:

        第一个问题也与JDK的版本有关。为了能够使用 jupiter 引擎,您必须具有 Java 8 或更高版本。对于第二个问题;由于vintage引擎是针对JUnit4的,而且JUnit4大于10年,不推荐使用。据我所知,虽然java已经进化了这么多,但它一直没有更新。我认为这就是为什么 spring 初始化器强制使用 junit-jupiter-engine。

        【讨论】:

          猜你喜欢
          • 2018-07-05
          • 2020-10-09
          • 1970-01-01
          • 2011-10-04
          • 2018-10-10
          • 2017-12-07
          • 2020-10-04
          • 2018-11-16
          • 2021-02-11
          相关资源
          最近更新 更多