加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在非测试代码中使用Hamcrest匹配器是否可以接受

发布时间:2020-12-14 05:51:38 所属栏目:Java 来源:网络整理
导读:我试图找到在非测试代码中使用Hamcrest匹配器的明确答案.我做了一些研究,并有一些对比的引用: Wikipedia的Hamcrest: Hamcrest is a framework that assists writing software tests in the Java programming language. [snip] These matchers have uses in
我试图找到在非测试代码中使用Hamcrest匹配器的明确答案.我做了一些研究,并有一些对比的引用:

> 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.当我想在同一个对象上测试不同的条件时,我会使用它来获取由于什么原因导致哪些条件失败的报告.然后将单个条件表示为不同的对象,这些对象也具有一些其他好的效果.例如,检查应用程序配置可以产生哪些操作支持数据的结果.

我特别使用hamcrest进行此类任务的原因:

>它的目的是为了做到这一点(测试条件不仅在测试代码中完成)
>它不会带来额外的依赖
>众所周知,许多人已将其用于测试代码
>有一个易于使用和小API
>易于扩展,非常好地支持组合

最后归结为选择合适的工具.例如,Bean验证可用于执行相对类似的工作.需要做出深思熟虑的决定,这也包含了开发过程和环境的要求.

使用匹配器也是使用Tell,do not Ask原则的好方法.您可以将匹配器传递给方法,以指示您希望返回的返回值.如果有问题的对象与该匹配器不匹配,则可以立即抛出具有良好错误描述的异常.

此外,当比较匹配器的使用与Java 8的谓词时,匹配器的好处是能够提供描述,但缺点是它们本身不是功能接口.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读