背景:
山姆大叔比较喜欢用一些新的技术和新的特性,最近在junit test的代码中,用到了containsString(String subString) 方法。
这个方法主要是用来创建一个包含了subString字符串的Matcher,通常的用法是:
assertThat("myStringOfNote", containsString("ring"));
即:assert一个信息,如果containsString 返回的Matcher中包含于“myStringOfNote”字符串中, 那么这个就不会抛异常;否则就会抛出类似:
java.lang.AssertionError:
Expected: (a string containing "color" or a string containing "colour")
got: "Please choose a font"
具体到这个assert的用法可以更多地去看官网的例子。
我这里是要说的是:同样的代码,我直接get latest revision 到我本地的时候,别人的可以跑,但是在我自己这里就不能编译,出现方法找不到的错误:
The import org.hamcrest.CoreMatchers.containsString cannot be resolved
解决方案:
我找到了同事的代码,对比看了,都是一样的。 刚开始以为是jdk版本不一致导致的问题。
方案1: 于是就改成了我同事一样版本的jdk,还是不能解决。
方案2: 去找到相应的jar,于是我找到hamcrest-all-1.3.jar,也都是有的。但是在我搜索hamcrest的时候,我的同事的jar包依赖来有一个:hamrest-core:1.3 的jar。如下:
而我的pom依赖树里没有这个jar,我很苦恼,为什么会出现这样的情况,而是我把本地repository的junit-4.11.jar删除掉,然后重新从服务器上拿到这个jar,这一次果然能拿到hamrest-core的依赖的。成功解决这个问题。
----EOF----