对于初学者,这些assertThat方法中哪一种更好?
> org.junit.Assert.assertThat(from junit-4.11.jar)
> org.hamcrest.MatcherAssert.assertThat(来自hamcrest-core-1.3.jar)
据今年早些时候,Hamcrest “could potentially give better error messages because the matcher is called to describe the mismatch”.
很难说这些帖子比较了哪些版本的Junit和Hamcrest.所以我想要一个基于最新版本的推荐.
解决方法
JUnit的最新版本现在包括hamcrest.
Infact org.junit.Assert.assertT方法签名是
public static <T> void assertThat(T actual,org.hamcrest.Matcher<T> matcher)
你会注意到使用hamcrest匹配器.
您可能仍然希望包含您自己的hamcrest版本,因为JUnit不是经常更新,并不一定总是使用最新版本的hamcrest.
根据maven pom,
JUnit 4.11使用hamcrest 1.3,我相信这是写作中最新的.
编辑
我刚刚阅读了你的第二篇文章http://blog.code-cop.org/2014/02/assert-or-matcherassert.html,它描述了hamcrest assert的两个细微差异,这使得它更有用:
>当匹配失败时,错误消息包括不同的“预期X但是是Y”.定制hamcrest匹配器可能包括更详细的信息,通过实现describeMismatch()
> assertThat签名在hamcrest使用T实际,Matcher超级T匹配器允许匹配器是超类型(如Matcher来比较整数和双精度).这通常没关系,但是当你需要它这是一个很好的功能.
所以使用org.hamcrest.MatcherAssert.assertThat