Hamcrest库Matcher和Hamcrest核心CoreMatchers之间的区别

它看起来像hamcrest org.hamcrest.Matchers类是非常相似org.hamcrest.CoreMatchers (虽然它看起来像Matchers有更多)。 为什么我会select使用CoreMatchers (除了看起来类似于稍小),为什么这两个类如此相似呢?

2 Solutions collect form web for “Hamcrest库Matcher和Hamcrest核心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,而无需在使用时对其进行全面限定。

  • testing驱动的开发 - 如何在没有任何实现代码存在的情况下编写testing
  • Junit - 运行一次设置的方法
  • Hamcrest比较collections
  • 如何让Junit 4忽略基础testing类?
  • 用JUnittesting一个EJB
  • 如何在java中testingjdbc代码?
  • 在IntelliJ 10.5中运行testing时获取“NoSuchMethodError:org.hamcrest.Matcher.describeMismatch”
  • System.out.println()的JUnit测试
  • 为什么要使用Hamcrest-Matcher和assertThat()而不是传统的assertXXX() - 方法
  • 如何使用JUnittesting依赖于环境variables的代码?
  • Hamcrest有多个正确的结果(有没有匹配器?)