Hamcrest何时使用Is或equalTo

时间:2017-05-25 14:34:47

标签: java hamcrest

我是新手使用hamcrest。当我发现如何使用它时,我一直怀疑何时使用isequalTo

isequalTo之间是否存在差异,尽管它在概念上或偶然上都有?它似乎行为相同。

 Assert.assertThat(actual, equalTo("blue"));
 Assert.assertThat(actual, is("red"));

为什么你会使用一个而不是另一个?

2 个答案:

答案 0 :(得分:13)

Matchers的Javadoc非常清楚。所有重载形式的is都是为了表达。

&#34; main&#34; isis(Matcher<T> matcher),其中:

  

装饰另一个Matcher,保留其行为,但允许测试更具表现力。

     

例如:

assertThat(cheese, is(equalTo(smelly)))
     

而不是:

assertThat(cheese, equalTo(smelly))

is(T value)是:

  

常用is(equalTo(x))

的快捷方式

允许assertThat(cheese, is(smelly))

...而is(java.lang.Class<T> type)是:

  

常用is(instanceOf(SomeClass.class))

的快捷方式

允许assertThat(cheese, is(DairyFood.class))

...但不推荐使用isA(DairyFood.class)

这归结为is(foo)equalTo(foo)在行为上完全相同,只要foo既不是Matcher也不是Class }。你应该使用你认为最清楚地传达你意图的那个。

答案 1 :(得分:1)

根据Docsis(Object obj)只是is(equalTo(Object obj))的快捷方式,您可以使用is来构建更具表现力的匹配器。