> Wikipedia的Hamcrest:
Hamcrest is a framework that assists writing software tests in the Java programming language. [snip] These matchers have uses in unit testing frameworks such as JUnit 07001 and jMock.
> Github的Hamcrest:
Hamcrest is a library of matchers,which can be combined in to create flexible expressions of intent in tests.
> Hamcrest于Google Code:
Note: Hamcrest it is not a testing library: it just happens that matchers are very useful for testing.
就个人而言,我将Matchers与测试联系起来,所以我倾向于避免在测试之外使用它们.尽管如此,我认为没有任何限制可以阻止它们在测试范围之外使用.
这是否归结为个人偏好?
解决方法
我特别使用hamcrest进行此类任务的原因:
>它的目的是为了做到这一点(测试条件不仅在测试代码中完成)
>它不会带来额外的依赖
>众所周知,许多人已将其用于测试代码
>有一个易于使用和小API
>易于扩展,非常好地支持组合
最后归结为选择合适的工具.例如,Bean验证可用于执行相对类似的工作.需要做出深思熟虑的决定,这也包含了开发过程和环境的要求.
使用匹配器也是使用Tell,do not Ask原则的好方法.您可以将匹配器传递给方法,以指示您希望返回的返回值.如果有问题的对象与该匹配器不匹配,则可以立即抛出具有良好错误描述的异常.
此外,当比较匹配器的使用与Java 8的谓词时,匹配器的好处是能够提供描述,但缺点是它们本身不是功能接口.