Hamcrest何时使用Is或equalTo

Pau*_*Pau 12 java hamcrest

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

有什么区别isequalTo,虽然它在概念上还是ocasionally?它似乎行为相同.

 Assert.assertThat(actual, equalTo("blue"));
 Assert.assertThat(actual, is("red"));
Run Code Online (Sandbox Code Playgroud)

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

sli*_*lim 14

Javadoc Matchers非常清楚.is在所有重载形式中都有表现力.

"主要" isis(Matcher<T> matcher):

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

例如:

assertThat(cheese, is(equalTo(smelly)))
Run Code Online (Sandbox Code Playgroud)

代替:

assertThat(cheese, equalTo(smelly))
Run Code Online (Sandbox Code Playgroud)

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既不是a Matcher也不是a Class.您应该使用您认为最清楚地传达您的意图的任何一种.