使用junit4.12作单元测试报Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDescrib

######################################################################################################################################

今天做单元测试遇到的问题,刚刚出现问题的时候不知道如何去解决这个问题,后来把异常信息粘贴到百度上,搜索到了各位大牛写的博客,解决了这个问题,因此我也来记录一下这个小的异常

######################################################################################################################################

异常内容:
Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)

这个错误通常是当你尝试运行JUnit测试时遇到的,它表明JUnit的某个依赖库没有被正确地加载到你的程序中。解决这个问题通常需要以下几个步骤: 1. **检查依赖**: 确保你在`pom.xml`(Maven项目)或`build.gradle`(Gradle项目)中已经添加了JUnit的相关依赖。对于Maven,可能需要的是 `org.junit.platform:junit-platform-launcher` 和 `org.junit.jupiter:junit-jupiter-engine`。 ```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. **Maven/Gradle更新**:确保你的构建工具已更新至最新的版本,并同步本地仓库。 3. **清理并重建项目**:删除目标目录(如`target`),然后重新构建项目 (`mvn clean install` 或 `gradle clean build`)。 4. **路径问题**:确认`junit-platform-launcher`和`junit-jupiter-engine` jar 文件是否被正确地放置在项目的classpath路径下,或者它们已经被包含在打包的可执行文件中。 5. **检查IDE配置**:如果你是在集成开发环境(IDE)中运行测试,确保IDE已设置正确的插件和路径以便找到JUnit库。 如果以上步骤都试过了还是无法解决问题,可能是你的测试类未正确标注为@RunWith(JUnitPlatform.class),或者测试类所在的包结构有问题。如果问题依然存在,建议查看具体的错误堆栈信息或搜索更详细的解决方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值