作者:林林净洁_526 | 来源:互联网 | 2023-01-09 19:42
在Maven项目中,我有一些现有的测试依赖于JUnit 4.由于多种原因,我无法在JUnit 5中迁移这些测试.
实质上,一些测试依赖于使用JUnit 4 runner的库,代码迁移可能需要一些时间.
我想用JUnit 5创建新的测试类,现在已经发布并提供了新的有趣功能.
怎么做 ?
1> davidxxx..:
JUnit 5提供了开箱即用的方法.
JUnit 5 = JUnit平台+ JUnit Jupiter + JUnit Vintage
每个项目都是一个独特的项目,使用它们可以在同一个项目中编译和执行JUnit 4和JUnit 5测试.
JUnit Jupiter是用于在JUnit 5中编写测试和扩展的新编程模型和扩展模型的组合.
JUnit Vintage提供了一个TestEngine,用于在平台上运行基于JUnit 3和JUnit 4的测试.
JUnit平台是在JVM上启动测试框架的基础
更新:来自Maven Surefire 2.22.0
从JUnit 5文档:
从版本开始2.22.0
,Maven Surefire为在JUnit平台上执行测试提供本机支持.
所以配置要简单得多.
请注意,junit-4
api依赖项是可选的engine
,因为现在需要的依赖项已经提取了默认api
版本(junit 4和5都是这种情况).
这是一个例子pom.xml
.
4.0.0
david
jupiter-4-and-5-same-build
0.0.1-SNAPSHOT
1.8
1.8
5.1.0
4.12
org.junit.jupiter
junit-jupiter-engine
${junit-jupiter.version}
test
org.junit.vintage
junit-vintage-engine
${junit-jupiter.version}
junit
junit
${junit.version}
test
maven-surefire-plugin
2.22.0
在我的GitHub空间中,我添加了一个可以浏览/克隆的工作示例maven项目.网址:https://github.com/ebundy/junit4-and-5-minimal-maven-project
老路:下面是Maven Surefire 2.22.0
以下是与Maven一起使用的最小配置,用于配置项目以编译和运行JUnit4和JUnit5测试:
4.0.0
mygroup
minimal-conf-junit4-5
0.0.1-SNAPSHOT
1.8
1.8
4.12
4.12.1
5.0.1
1.0.1
org.junit.jupiter
junit-jupiter-api
${junit-jupiter.version}
test
junit
junit
${junit.version}
test
maven-surefire-plugin
2.19.1
org.junit.platform
junit-platform-surefire-provider
${junit-platform.version}
org.junit.vintage
junit-vintage-engine
${junit-vintage-engine}
org.junit.jupiter
junit-jupiter-engine
${junit-jupiter.version}
现在mvn test
编译并运行JUnit 4和JUnit 5测试.
注1:在junit-vintage-engine
(4.12.1
)和junit
(4.12
)的依赖性不指定完全相同的版本.
这根本不是问题:
他们的释放与他们之间没有关系
junit-vintage-engine
旨在运行任何JUnit 3或4测试.
注2:maven-surefire-plugin与2.19.1
版本无关,无论你想编译JUnit 5测试类还是JUnit 4和JUnit 5测试类.
下一版本的插件在JUnit 5测试执行期间确实会导致一些异常,但2.22.0
最终解决了这个问题(参见答案的第一部分:" 更新:来自Maven Surefire 2.22.0 ").