junit-jupiter-api和junit-jupiter-engine之间的区别

时间:2018-01-25 17:04:28

标签: java junit junit5

maven模块junit-jupiter-apijunit-jupiter-engine之间有什么区别?是否有必要在build.gradle

中包含两个依赖项

我是否需要编写像

这样的依赖项
testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
testCompile("org.junit.jupiter:junit-jupiter-api:${junitVersion}")

testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")

够了吗?

我是否需要在junit-vintage-engine上添加依赖项?

4 个答案:

答案 0 :(得分:21)

来自the docs

  

<强> junit-jupiter-api

     

用于编写测试和扩展的JUnit Jupiter API。

     

<强> junit-jupiter-engine

     

JUnit Jupiter测试引擎实现,仅在运行时需要。

     

<强> junit-vintage-engine

     

JUnit Vintage测试引擎实现,允许在新的JUnit平台上运行复古JUnit测试,即以JUnit 3或JUnit 4样式编写的测试。

所以......

  • 您需要junit-jupiter-apijunit-jupiter-engine来编写和运行JUnit5测试
  • 如果(a)您正在使用JUnit5 (b)您的测试用例使用JUnit4构造/注释/规则等,则只需要junit-vintage-engine

答案 1 :(得分:6)

仅需注意,junit-jupiter-api作为子依赖项包含在junit-jupiter-engine Maven存储库中。因此,您只需要添加junit-jupiter-engine即可同时获得两者。我确定gradle是一样的。 https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine/5.1.1

答案 2 :(得分:3)

junit-jupiter工件

JUnit 5.4 provides如果要编写JUnit 5测试,则Maven配置要简单得多。只需指定名为junit-jupiter的聚合工件即可。

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.4.0</version>
    <scope>test</scope>
</dependency>

为方便起见,此聚合工件又自动拉出以下三个工件:

在您的项目中,您还将最终得到:

  • junit-platform-commons-1.4.0.jar
  • junit-platform-engine-1.4.0.jar

以上是您基于新的Jupiter范式编写和运行JUnit 5测试所需要的。

传统测试

如果您的项目具有要继续运行的JUnit 3或4测试,请为 JUnit Vintage Engine 添加另一个依赖项junit-vintage-engine。参见tutorial by IBM

<!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine -->
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.4.0</version>
    <scope>test</scope>
</dependency>

答案 3 :(得分:0)

对您问题的最准确答案是在junit-team/junit5-samples存储库中。只需查看junit5-jupiter-starter-gradle(针对Gradle)和junit5-jupiter-starter-maven(针对maven)即可。

在两个示例中都可以看到,唯一需要的依赖项是junit-jupiter