一次单体测试的采坑--MatcherAssert.assertThat---org.hamcrest 和org.mockito

时间:2021-04-27 07:09:39

单体测试测试环境ci上报这个错, 本地没问题.

org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V

基本确定是环境问题.

因为本地用idea跑, 服务器用maven跑.

-----------------------------------------------------------------------

google找找答案,

https://tedvinke.wordpress.com/2013/12/17/mixing-junit-hamcrest-and-mockito-explaining-nosuchmethoderror/

可以用.

稍微改一下, 因为版本已经千差万别了.

查一下mvn dependency:tree -Dscope=test,看到了:

一次单体测试的采坑--MatcherAssert.assertThat---org.hamcrest 和org.mockito

淘宝的fastdfs client里包含了这个引用.

找到.m2目录下这个包,

一次单体测试的采坑--MatcherAssert.assertThat---org.hamcrest 和org.mockito

解压一下:

一次单体测试的采坑--MatcherAssert.assertThat---org.hamcrest 和org.mockito

果然, 有个hamcrest, NND 真TM害人.

以后看到这种带all的都要留意一下, 不知道他整合了写虾米.

反编译对比一下:

一次单体测试的采坑--MatcherAssert.assertThat---org.hamcrest 和org.mockito

再看看正式版, 还是差了好多东西, 比如我在代码里用的

一次单体测试的采坑--MatcherAssert.assertThat---org.hamcrest 和org.mockito

MatcherAsset这个类就没有, 编译时找到了对的jar包, 运行时, 去找了mockito-all里的hamcrest

下面是正式版

一次单体测试的采坑--MatcherAssert.assertThat---org.hamcrest 和org.mockito