看起来hamcrestorg.hamcrest.Matchers
类非常相似org.hamcrest.CoreMatchers
(尽管看起来Matchers
更多)。我为什么要选择使用CoreMatchers
(除了看起来该类稍小以外),为什么这两个类如此相似?
Answers:
Hamcrest匹配器分为几个模块。“核心”包括构建其他匹配器所需的最基本的匹配器和抽象类。org.hamcrest.CoreMatchers
仅包括这些匹配器的工厂方法。其他匹配器在“库”模块中,按它们匹配的对象类型分组,并且是可选的。org.hamcrest.Matchers
包括两组匹配器。
您应该使用哪个?我从后者静态导入所有内容,没有任何麻烦。也许编译时间可能会花费更长的时间,但这对我来说从来就不是问题。除了JUnit导入,我将其放在单元测试的顶部:
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
这在测试方法中提供了最佳的可读性。
如果您使用Android的JUnit测试(非连接测试),则CoreMatcher
s似乎已包含在junit模块中,而Matchers
没有。
因此,为了节省开销并避免导入另一个库,请考虑使用CoreMatcher
这些类的版本(如果满足):
assertThat(chrome.twiddle(), is(equalTo(0)));
仅可使用CoreMatcher
s。