问题分析
写测试方法测试功能模块的时候发现,在执行@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包啦。
发表评论