如何解决JUnit 5 迁移 - 如何解决 java.lang.ClassNotFoundException: org.junit.jupiter.api.extension.ReflectiveInvocationContext
当我运行一些 JUnit 5 测试时(在同一个项目中也有 JUnit 4 测试,因为我们正在向 JUnit 5 迁移),我看到这个错误:
No tests were executed
...
Caused by:
java.lang.classNotFoundException: org.junit.jupiter.api.extension.ReflectiveInvocationContext
如何解决?
解决方法
确保您的 pom.xml
中有这些依赖项:
- org.junit.jupiter:junit-jupiter-engine
对于 JUnit 4:
- junit:4.12+
- org.junit.vintage:junit-vintage-engine(仅支持 JUnit 4.12+)
如果你想使用@ParameterizedTest:
- org.junit.jupiter:junit-jupiter-api
- org.junit.jupiter:junit-jupiter-params
org.junit.platform:junit-platform-launcher
不是必需的,即使您想在 Intellij 中运行测试。也许你可以试试不加它。
<!-- junit 5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<!-- junit 5 parameterized tests -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<!-- for compatibility for JUnit 4. JUnit vintage needs 4.12+ -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- for compatibility for JUnit 4 -->
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<!-- for IDE support only(running tests from IDE) -->
<!-- <dependency>-->
<!-- <groupId>org.junit.platform</groupId>-->
<!-- <artifactId>junit-platform-launcher</artifactId>-->
<!-- <version>1.7.1</version>-->
<!-- <scope>test</scope>-->
<!-- </dependency>-->
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。