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

6pp0gazn  于 2022-12-04  发布在  其他
关注(0)|答案(5)|浏览(235)

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上添加依赖项?

lsmd5eda

lsmd5eda1#

junit-jupiter聚合器工件

如果您打算编写JUnit 5测试,JUnit 5.4 provides会使Maven配置更加简单。只需指定名为junit-jupiter的聚合工件即可。

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.9.1</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.9.1</version>
    <scope>test</scope>
</dependency>
cgh8pdjw

cgh8pdjw2#

JUnit 5.4版之前的版本

来自文档:

一月一日

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

一个月一个月

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

junit-vintage-engine

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

  • 编写和运行JUnit 5测试需要junit-jupiter-apijunit-jupiter-engine
  • 只有在以下情况下才需要junit-vintage-engine:(a)您正在运行JUnit 5并且(B)您的测试用例使用JUnit 4结构/注解/规则等

JUnit 5.4及更高版本

在JUnit 5.4中,这是简化的,有关更多详细信息,请参见this answer

monwx1rj

monwx1rj3#

需要注意的是,junit-jupiter-api作为子依赖项包含在junit-jupiter-engine Maven资源库中。因此,您只需要添加junit-jupiter-engine即可获得这两个依赖项。我相信gradle也是一样的。https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine/5.1.1

vdzxcuhz

vdzxcuhz4#

您的问题的最准确答案在junit-team/junit5-samples存储库中。只需查看适用于Gradle的junit5-jupiter-starter-gradle和适用于maven的junit5-jupiter-starter-maven
正如您在两个示例中看到的,唯一需要的依赖项是junit-jupiter

cidc1ykv

cidc1ykv5#

如果您想使用Junit 5运行测试,您将只需要junit-jupiter-api。如果您将junit-jupiter-engine与沿着使用,您的测试将中断,无法运行。
我不知道为什么它被放置,但是,前面的答案告诉你,你将需要使用这两个是不正确的。

相关问题