Hamcrest库Matcher和Hamcrest核心CoreMatchers之间的区别
它看起来像hamcrest org.hamcrest.Matchers
类是非常相似org.hamcrest.CoreMatchers
(虽然它看起来像Matchers
有更多)。 为什么我会select使用CoreMatchers
(除了看起来类似于稍小),为什么这两个类如此相似呢?
Hamcrest匹配器分成几个模块。 “核心”包括构build其他匹配者所需的最基本的匹配器和抽象类。 org.hamcrest.CoreMatchers
包含了这些匹配器的工厂方法。 其他匹配器位于“库”模块中,它们按照匹配的对象types分组,并且是可选的。 org.hamcrest.Matchers
包含两套匹配器。
你应该使用哪一个? 我静静地从后者import一切,没有任何麻烦。 也许编译时间可能会稍微长些,但这对我来说从来都不是问题。 除了JUnit导入之外,我还将其放在了unit testing的顶部:
import static org.hamcrest.MatcherAssert.*; import static org.hamcrest.Matchers.*;
这给testing方法提供了最好的可读性。
如果你使用Mockito(和我一样),你可能会这样做:
import org.mockito.Mockito;
要么
static import org.mockito.Mockito.*;
而且由于Mockito
类扩展了Mockito的Matchers类,那么你最终可能会在Matchers类或它们的静态方法之间产生冲突。 拥有CoreMatchers允许我在与Mockito相同的类中使用JUnit派生的CoreMatchers,而无需在使用时对其进行全面限定。