Hamcrest 何时使用 Is 或 equalTo
Hamcrest When to use Is or equalTo
我是 hamcrest 的新手。当我发现如何使用它时,我一直怀疑何时使用 is
或 equalTo
。
is
和 equalTo
之间有什么区别吗?它的行为似乎是一样的。
Assert.assertThat(actual, equalTo("blue"));
Assert.assertThat(actual, is("red"));
为什么你会用一个而不是另一个?
根据 Docs,is(Object obj)
只是 is(equalTo(Object obj))
的快捷方式,您可以在其中使用 is
来编写更具表现力的匹配器。
Matchers
的 Javadoc 非常清楚。 is
所有重载形式都是为了表现力。
“主要”is
是 is(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
。您应该使用您认为最清楚地传达您的意图的任何一个。
我是 hamcrest 的新手。当我发现如何使用它时,我一直怀疑何时使用 is
或 equalTo
。
is
和 equalTo
之间有什么区别吗?它的行为似乎是一样的。
Assert.assertThat(actual, equalTo("blue"));
Assert.assertThat(actual, is("red"));
为什么你会用一个而不是另一个?
根据 Docs,is(Object obj)
只是 is(equalTo(Object obj))
的快捷方式,您可以在其中使用 is
来编写更具表现力的匹配器。
Matchers
的 Javadoc 非常清楚。 is
所有重载形式都是为了表现力。
“主要”is
是 is(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
。您应该使用您认为最清楚地传达您的意图的任何一个。