Hamcrest 何时使用 Is 或 equalTo

Hamcrest When to use Is or equalTo

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

isequalTo 之间有什么区别吗?它的行为似乎是一样的。

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

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

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

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

“主要”isis(Matcher<T> matcher) 其中:

Decorates another Matcher, retaining its behaviour, but allowing tests to read slightly more like an English phrase.

For example:

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

instead of:

assertThat(cheese, equalTo(smelly))

is(T value) 是:

A shortcut to the frequently used is(equalTo(x)).

允许assertThat(cheese, is(smelly))

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

A shortcut to the frequently used is(instanceOf(SomeClass.class)).

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

...但这已被弃用,取而代之的是 isA(DairyFood.class)


归结为 is(foo)equalTo(foo) 的行为完全相同,只要 foo 既不是 Matcher 也不是 Class。您应该使用您认为最清楚地传达您的意图的任何一个。