Maven Surefire插件执行JUnit 4测试,即使JUnit Vintage Engine不在Maven项目中

pes8fvy9  于 2022-11-11  发布在  Maven
关注(0)|答案(1)|浏览(191)

我有一个包含JUnit 4和JUnit 5测试的Maven项目。
我使用的是3.0.0-M07版本的Maven Surefire插件。在Maven依赖关系树中可以找到以下相关依赖关系(我使用mvn dependency:tree进行了检查):

  • org.junit.jupiter:junit-jupiter-api:jar:5.8.2:test
  • org.junit.platform:junit-platform-commons:jar:1.8.2:test
  • org.junit.jupiter:junit-jupiter-params:jar:5.8.2:test
  • junit:junit:jar:4.13.2:test

根据JUnit 5文档,需要提供JUnit Vintage Engine才能执行JUnit 4测试。
但是,Maven Surefire插件同时执行JUnit 4和JUnit 5测试。
为什么Maven Surefire插件能够执行JUnit 4测试,即使在我的Maven项目中没有对JUnit Vintage Engine的依赖性?

s5a0g9ez

s5a0g9ez1#

通过使用junit-jupiter-api maven-surefire-plugin/maven-failsafe-plugin,可以自动加载junit-vintage-engine并执行基于JUnit 4的测试。
正确的方法是使用junit-jupiter-engine而不是junit-jupiter-api
详细说明可here获得。

相关问题