Hamcrest 何时使用 Is 或 equalTo
我是新来的,使用hamcrest。虽然我发现如何使用它,但我一直怀疑何时使用或.is
equalTo
和 之间是否有任何区别,尽管它在概念上或从概念上是有区别的?它的行为似乎相同。is
equalTo
Assert.assertThat(actual, equalTo("blue"));
Assert.assertThat(actual, is("red"));
为什么你会使用一个而不是另一个?
我是新来的,使用hamcrest。虽然我发现如何使用它,但我一直怀疑何时使用或.is
equalTo
和 之间是否有任何区别,尽管它在概念上或从概念上是有区别的?它的行为似乎相同。is
equalTo
Assert.assertThat(actual, equalTo("blue"));
Assert.assertThat(actual, is("red"));
为什么你会使用一个而不是另一个?
Javadoc 非常清楚。 在其所有超载形式中,都是为了表现力。Matchers
is
“主要”是:is
is(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)
这可以归结为,只要既不是 a 也不是 .你应该使用任何你认为最清楚地传达你意图的人。is(foo)
equalTo(foo)
foo
Matcher
Class