- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是 hamcrest 的新手。在探索如何使用它的过程中,我一直对何时使用 is
或 equalTo
存疑。
is
和 equalTo
之间有什么区别吗?它的行为似乎是一样的。
Assert.assertThat(actual, equalTo("blue"));
Assert.assertThat(actual, is("red"));
为什么你会使用一个而不是另一个?
最佳答案
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
.您应该使用您认为最能清楚传达您的意图的任何内容。
关于java - Hamcrest 何时使用 Is 或 equalTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44183196/
我是一名优秀的程序员,十分优秀!