看起来hamcrest org.hamcrest.Matchers类非常类似于org.hamcrest.CoreMatchers (尽管看起来Matchers有更多)。为什么我会选择使用CoreMatchers (除了它看起来稍微小一点),为什么这两个类如此相似?
发布于 2012-06-09 04:45:59
Hamcrest匹配器被分成几个模块。“核心”包括构建其他匹配器所需的最基本的匹配器和抽象类。org.hamcrest.CoreMatchers只包含这些匹配器的工厂方法。其他匹配器在“库”模块中,按它们匹配的对象类型分组,并且是可选的。org.hamcrest.Matchers包括这两组匹配器。
你应该使用哪一个?我会毫不费力地从后者静态导入所有内容。也许编译时间可能会稍微长一点,但这对我来说从来都不是问题。除了JUnit导入之外,我还将此代码放在单元测试的顶部:
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;这在测试方法中提供了最佳的可读性。
发布于 2013-03-20 06:23:46
如果你经常使用Mockito (和我一样),你可能会这样做:
import org.mockito.Mockito;或
static import org.mockito.Mockito.*;由于Matcher类扩展了Mockito的Matchers类,因此您可能会在Matcher类或它们的静态方法之间产生冲突。有了CoreMatchers,我就可以在与Mockito相同的类中使用从JUnit派生的CoreMatchers,而不必在使用时对它们进行完全限定。
发布于 2018-06-24 21:18:22
如果你使用Android的JUnit测试(非连接测试),CoreMatcher似乎可以在已经包含的junit模块中使用,而Matchers则不能。
因此,为了节省开销并避免导入其他库,请考虑使用这些类的CoreMatcher版本(如果它们足够):
assertThat(chrome.twiddle(), is(equalTo(0)));仅使用CoreMatchers是可能的。
https://stackoverflow.com/questions/10932941
复制相似问题