Hamcrest – 使用什么版本? 1.3或2

我很困惑。 目前我正在测试我的弹簧应用程序

 org.springframework.boot spring-boot-starter-test test  

只要我想匹配RegularExpressions,我就开心了。 在hamcrest 1.3中你需要编写自己的匹配器,我不喜欢这么多。 我搜索并发现hamcrest 2.0内置了一些内容,例如:

 assertThat(DateHelper.getActualDateForXML(), MatchesPattern.matchesPattern("\\d{4}+-\\d{2}-+\\d{2}+T\\d{2}+:\\d{2}+:\\d{2}+")); 

我很高兴,我补充说:

  org.hamcrest hamcrest-junit 2.0.0.0 test  

并从spring-boot-starter-test中踢出了1.3个hamcrest依赖项:

   org.hamcrest hamcrest-library   org.hamcrest hamcrest-core   

现在一切都在按照我的预期工作,但我觉得不舒服。 因为我可以找到人们写的关于1.3并且无法真正找到使用hamcrest-junit 2.0的人。

有人可以解释一下他们之间的联系吗? 因为似乎hamcrest-junit 2.0的所有内容都来自hamcrest 1.3 …

谢谢本

基于Hamcrest Github

  • Hamcrest Github CHANGES.txt
  • 解耦Hamcrest和JUnit的演变
  • 这还在维持吗?

和JUnit Lambda(Junit 5)

  • 最小化依赖性(尤其是第三方)

我接受它

  • hamcrest-junit 2.0(应该是)一个新的开始,也是将hamcrest与junit分离的目标
  • 与此同时,Junit 5项目启动了(也希望)减少/删除第三方依赖项

=>在这种情况下,我希望Hamcrest人员在向前推进之前等待/协调JUnit 5项目是谨慎的。

正如@heenenee所提到的那样,这些家伙忙于处理其他事情,所以此时项目并没有多少。

回答

有人可以解释一下他们之间的联系吗? 因为看起来hamcrest-junit 2.0的所有内容都来自hamcrest 1.3

  • hamcrest-junit 2.0已经开始,但其后面的人很快就忙着(现在还有)其他项目,所以开发停止了
  • 关于JUnit 5可能还存在一些不确定因素,这可能会促使将hamcrest-junit 2.0的进一步推迟到JUnit 5的发布(推测)

……但我感觉不舒服。 因为我可以找到人们写的关于1.3并且无法真正找到使用hamcrest-junit 2.0的人。

目前,除了你的情况,没有太大的动力转移到hamcrest-junit 2.0。 一旦Junit 5发布,我预计会有更多的动力再次前进。

伊沃的很好的答案,这应该是获得更多的选票,但这里有一些补充信息。 如果您检查Maven有关依赖项的信息, Java Hamcrest 2.0.0.0和Hamcrest JUnit 2.0.0.0 ,则有一些使用链接。 在我写这篇文章时,它分别是74和68,并且没有简短浏览的重大项目。