2012-06-07 32 views

回答

37

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

你应该使用哪一个?静态地从后者导入所有内容,没有任何问题。也许编译时间可能会稍微长一些,但这对我来说从来都不是问题。除了JUnit进口外,我还将其列在单元测试的顶部:

import static org.hamcrest.MatcherAssert.*; 
import static org.hamcrest.Matchers.*; 

这给出了测试方法中最好的可读性。

9

如果您使用的Mockito很多(像我一样),你可能会做:

import org.mockito.Mockito; 

static import org.mockito.Mockito.*; 

而且由于Mockito类扩展的Mockito的Matchers类,那么你就可以结束Matchers类或它们的静态方法之间存在冲突。拥有CoreMatchers允许我在与Mockito相同的类中使用JUnit派生的CoreMatchers,而无需在使用时对其进行全面限定。

相关问题