Java junit jupiter api和junit jupiter引擎之间的差异

Java junit jupiter api和junit jupiter引擎之间的差异,java,junit,junit5,Java,Junit,Junit5,maven模块与junit jupiter api和junit jupiter引擎之间的区别是什么?是否需要在build.gradle中同时包含这两个依赖项 我是否需要同时提供这两个依赖项 testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}") testCompile("org.junit.jupiter:junit-jupiter-api:${junitVersion}"

maven模块与junit jupiter api和junit jupiter引擎之间的区别是什么?是否需要在
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的依赖关系?

5.4版之前的junit 发件人:

junit jupiter api

JUnitJupiter API,用于编写测试和扩展

junit jupiter引擎

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

junit vintage引擎

JUnit Vintage测试引擎实现,允许在新的JUnit平台上运行Vintage JUnit测试,即以JUnit 3或JUnit 4风格编写的测试

所以

  • 编写和运行JUnit5测试需要
    junit jupiter api
    junit jupiter引擎
  • 如果(a)您使用的是JUnit5和(b)您的测试用例使用JUnit4构造/注释/规则等,那么您只需要
    junit vintage engine
JUnit从5.4版开始
在JUnit 5.4中,这是简化的,请参阅以获取更多详细信息。

只需注意,
JUnit jupiter api
作为子依赖项包含在
JUnit jupiter engine
Maven存储库中。因此,您只需添加
junitjupiter引擎
,即可同时获得这两个引擎。我相信格雷德尔也一样。

您的问题的最准确答案在存储库中。看看格雷德尔和马文

正如您在这两个示例中所看到的,唯一需要的依赖项是
junitjupiter

junitjupiter
工件 如果您的目的是编写JUnit5测试,那么Maven配置就简单多了。只需指定名为的聚合工件


org.junit.jupiter
(编译依赖项)
  • (编译依赖项)
  • (运行时依赖项)
  • 在您的项目中,您还将得到:

    • junit-platform-commons-1.4.0.jar
    • junit-platform-engine-1.4.0.jar
    上面是基于新的Jupiter范例编写和运行JUnit 5测试所需的内容

    遗留测试 如果您的项目具有要继续运行的JUnit 3或4测试,请为JUnit Vintage引擎添加另一个依赖项。看

    
    org.junit.vintage
    朱尼特老式发动机
    5.4.2
    测试
    
    小改进:JUnit团队的建议是对这两个引擎都使用
    testRuntime
    。您不需要同时添加这两个引擎,因为
    jupiter api
    jupiter engine
    的一个可传递依赖项。在5.5.1版本中,我只能使用“JUnit jupiter api”编写和运行JUnit测试。@gaurav,是的,这在我的回答说明的这一部分中有介绍:在JUnit 5.4中,这是简化的,请参阅以了解更多详细信息。现在在JUnit 5.4中简化了,后来简化为
    JUnit jupiter
    。在我看来,这是最好的答案。