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

fbo*_*kov 32 java junit junit5

maven模块junit-jupiter-api和有什么区别junit-jupiter-engine?是否有必要包含两个依赖项build.gradle

我是否需要编写两个依赖项

testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
testCompile("org.junit.jupiter:junit-jupiter-api:${junitVersion}")
Run Code Online (Sandbox Code Playgroud)

要么

testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
Run Code Online (Sandbox Code Playgroud)

足够?

我需要添加依赖junit-vintage-engine吗?

gly*_*ing 27

来自文档:

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测试
  • 您只需要junit-vintage-engine(a)运行JUnit5 (b)您的测试用例使用JUnit4构造/注释/规则等

  • 您不需要添加两者,因为`jupiter-api`是`jupiter-engine`的传递依赖项。 (2认同)
  • 在 5.5.1 版本中,我只能使用“junit-jupiter-api”编写和运行 junit 测试。 (2认同)
  • @gaurav,是的,这在我的答案的这一部分中有所介绍_注意:在 JUnit 5.4 中,这是简化的,请参阅[此答案](/sf/answers/3855882551/)了解更多详细信息。_ (2认同)

Bas*_*que 13

junit-jupiter 神器

如果您打算编写JUnit 5测试,则JUnit 5.4提供了更为简单的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.2</version>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

旧版测试

如果你的项目中有JUnit 3或4周的测试要继续运行,再添依赖的JUnit的老式发动机junit-vintage-engine。请参阅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.2</version>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,这是最好的答案。 (2认同)

Kas*_*sun 10

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

  • 现在在JUnit 5.4及更高版本中已简化为&lt;artifactId&gt; junit-jupiter &lt;/ artifactId&gt;。 (2认同)