java - Hamcrest 何时使用 Is 或 equalTo

标签 java hamcrest

我是 hamcrest 的新手。在探索如何使用它的过程中,我一直对何时使用 isequalTo 存疑。

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

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

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

最佳答案

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 .您应该使用您认为最能清楚传达您的意图的任何内容。

关于java - Hamcrest 何时使用 Is 或 equalTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44183196/

相关文章:

java - 在java中输出匹配的捕获组

java - Junit 和 Hamcrest 的单元测试失败 - 无法将数据与两个列表对象进行比较

java - Hamcrest 测试一个 map 是否包含另一个 map 中的所有条目

java - Hamcrest 匹配器的冲突重载

java - 尝试使用 Spring Security 自定义失败登录

java - 使用if else语句扫描并打印奇数和偶数

java - 使用Tomcat服务器缓存数据

java - 将大于 127 的值存储在字节数组中

unit-testing - 如何编译使用 hamcrest 'is' 的 Kotlin 单元测试代码

java - Hamcrest 匹配器比较来自 JSON 的 double 值