当前位置: 代码网 > it编程>编程语言>Java > java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing单元测试报错的问题解决

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing单元测试报错的问题解决

2024年08月06日 Java 我要评论
写测试方法测试功能模块的时候发现,在执行@Test单元测试方法时,产生以下报错信息:我这里导的包是Junit4.12,代码也没有问题。下边来看一下报错信息,这个错误提示是缺少 Hamcrest 的 SelfDescribing 类。显然,在测试方法的代码中是没有用到这个类的,那就肯定是单元测试的运行过程中有加载这个类,这里找不到,所以报错。所以问题的原因就是缺少了一些东西,Hamcrest相关的。

问题分析

写测试方法测试功能模块的时候发现,在执行@test单元测试方法时,产生以下报错信息:

我这里导的包是junit4.12,代码也没有问题。

下边来看一下报错信息,这个错误提示是缺少 hamcrest 的 selfdescribing 类。

显然,在测试方法的代码中是没有用到这个类的,那就肯定是单元测试的运行过程中有加载这个类,这里找不到,所以报错。

所以问题的原因就是缺少了一些东西,hamcrest相关的 。

问题解决

在网上找了一圈之后,找到了问题的原因。

原来hamcrest是一个用于编写测试断言的框架,而junit4.12中使用了hamcrest的selfdescribing 接口。因此,如果在运行 junit 4.12 测试类时缺少了 hamcrest 的相关 jar 包就会出现这个错误。

所以要解决这个问题,我们只需要在项目中引入hamcrest的jar包即可。

1、如果是在maven项目中在 pom.xml 文件中添加以下依赖即可导入:

<dependency>
    <groupid>org.hamcrest</groupid>
    <artifactid>hamcrest-all</artifactid>
    <version>1.3</version>
    <scope>test</scope>
</dependency>

2、如果是在普通的项目中,直接往项目中添加jar包即可:

 

添加完之后再执行,就不会再报错啦。

3、其他接解决办法

在查阅资料的过程中吗,也有看到另外一个解决办法,就是换用junit4.12之前的版本。

在junit 4.12之前的版本中,junit 没有内置的hamcrest的selfdescribing接口。

如果使用的是没有内置的hamcrest 的selfdescribing 接口的单元测试,自然也就不需要添加相关的jar包啦。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com