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}")
或
testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
够了吗?
我是否需要在junit-vintage-engine
上添加依赖项?
答案 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-api
和junit-jupiter-engine
来编写和运行JUnit5测试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-jupiter-api
(编译依赖项)junit-jupiter-params
(编译依赖项)junit-jupiter-engine
(运行时依赖项)在您的项目中,您还将最终得到:
以上是您基于新的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
。