首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hamcrest库匹配器与hamcrest核心CoreMatchers的区别

hamcrest库匹配器与hamcrest核心CoreMatchers的区别
EN

Stack Overflow用户
提问于 2012-06-07 21:35:41
回答 3查看 14.3K关注 0票数 73

看起来hamcrest org.hamcrest.Matchers类非常类似于org.hamcrest.CoreMatchers (尽管看起来Matchers有更多)。为什么我会选择使用CoreMatchers (除了它看起来稍微小一点),为什么这两个类如此相似?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-09 04:45:59

Hamcrest匹配器被分成几个模块。“核心”包括构建其他匹配器所需的最基本的匹配器和抽象类。org.hamcrest.CoreMatchers只包含这些匹配器的工厂方法。其他匹配器在“库”模块中,按它们匹配的对象类型分组,并且是可选的。org.hamcrest.Matchers包括这两组匹配器。

你应该使用哪一个?我会毫不费力地从后者静态导入所有内容。也许编译时间可能会稍微长一点,但这对我来说从来都不是问题。除了JUnit导入之外,我还将此代码放在单元测试的顶部:

代码语言:javascript
复制
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;

这在测试方法中提供了最佳的可读性。

票数 55
EN

Stack Overflow用户

发布于 2013-03-20 06:23:46

如果你经常使用Mockito (和我一样),你可能会这样做:

代码语言:javascript
复制
import org.mockito.Mockito;

代码语言:javascript
复制
static import org.mockito.Mockito.*;

由于Matcher类扩展了Mockito的Matchers类,因此您可能会在Matcher类或它们的静态方法之间产生冲突。有了CoreMatchers,我就可以在与Mockito相同的类中使用从JUnit派生的CoreMatchers,而不必在使用时对它们进行完全限定。

票数 11
EN

Stack Overflow用户

发布于 2018-06-24 21:18:22

如果你使用Android的JUnit测试(非连接测试),CoreMatcher似乎可以在已经包含的junit模块中使用,而Matchers则不能。

因此,为了节省开销并避免导入其他库,请考虑使用这些类的CoreMatcher版本(如果它们足够):

代码语言:javascript
复制
assertThat(chrome.twiddle(), is(equalTo(0)));

仅使用CoreMatchers是可能的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10932941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档