junit 单元测试报错:java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing

本文探讨了在使用JUnit 4.11及以上版本时遇到的NoClassDefFoundError错误,详细介绍了错误原因在于JUnit不再内嵌Hamcrest库。提供了两种解决方案:一是将JUnit版本降至4.10;二是单独导入hamcrest-core-1.3.jar。通过实践验证了这两种方案的有效性。

     今天在写代码的时候想把老系统里面加上单元测试,所以用最近做的springmvc上的一个项目中的junit扒一个下来:junit-4.12.jar 但是很奇怪在原来系统中好好能运行的,放到现在的项目中就老是报错:java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing。

    疯掉了后来查发现有人说换一个低版本的就行了,引入junit4.10.jar。果然行了,但是我们要知其然更要只其所以然 

   查官网:

JUnit now uses the latest version of Hamcrest. Thus, you can use all the available matchers and benefit from an improved assertThat which will now print the mismatch description from the matcher when an assertion fails.


junit.jar: Includes the Hamcrest classes. The simple all-in-one solution to get started quickly.Starting with version 4.11, Hamcrest is no longer included in this jar.
junit-dep.jar: Only includes the JUnit classes but not Hamcrest. Lets you use a different Hamcrest version.


    注意黑色加下划线的部分意思是4.11以上版本不在包含hamcrest。
    所以现在有两个办法解决:

   1.junit版本降到4.10

   2.导入hamcrest-core-1.3.jar

原文:https://blog.youkuaiyun.com/u011954243/article/details/77962329 

当你在Spring Boot项目中运行单元测试并遇到`java.lang.NoClassDefFoundError: org/junit/platform/launcher/TestIdentifier`这个错误,通常是因为JUnit Platform的依赖没有正确地添加到你的项目中。Spring Boot集成了一些常用的测试框架,包括JUnit,但是如果你直接使用了JUnit Platform而不是默认的Spring Boot Test,就需要手动配置。 解决这个问题的步骤如下: 1. **检查依赖**:确保你的pom.xml文件或者build.gradle(对于Gradle项目)中包含了JUnit Platform的依赖。例如,在Maven中,你需要添加类似这样的依赖: ```xml <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <version>最新版本号</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>最新版本号</version> </dependency> ``` 2. **排除Spring Boot自带测试依赖**:Spring Boot已经内置了对Spring Test的支持,如果同时引入了JUnit Platform可能会导致冲突。你可以尝试移除原有的`spring-boot-starter-test`依赖,并确认只保留必要的JUnit依赖。 3. **初始化环境**:确保在测试类上正确地注解了`@RunWith(JUnitPlatform.class)`或`@SpringBootTest`等Spring Boot测试运行注解。 4. **清理缓存**:有时候构建工具的缓存可能导致问题,尝试清除本地仓库或重建项目。 如果以上步骤都做了还是无法解决问题,提供详细的日志信息将有助于进一步诊断。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值