我是新的使用hamcrest。當我發現如何使用它時,我一直懷疑何時使用is
或equalTo
。Hamcrest何時使用是或等於
is
和equalTo
之間是否有區別,但它在概念上還是偶爾?它似乎表現一樣。
Assert.assertThat(actual, equalTo("blue"));
Assert.assertThat(actual, is("red"));
爲什麼你會用一個而不是另一個?
我是新的使用hamcrest。當我發現如何使用它時,我一直懷疑何時使用is
或equalTo
。Hamcrest何時使用是或等於
is
和equalTo
之間是否有區別,但它在概念上還是偶爾?它似乎表現一樣。
Assert.assertThat(actual, equalTo("blue"));
Assert.assertThat(actual, is("red"));
爲什麼你會用一個而不是另一個?
用於Matchers
的Javadoc非常清晰。所有重載形式中的is
都有表現力。
「主」 is
是is(Matcher<T> 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)
棄用。
什麼將此歸結爲是is(foo)
和equalTo(foo)
在他們的行爲完全等同,只要是foo
既不是Matcher
也不是Class
。你應該使用你認爲最清楚地傳達你的意圖的任何一個。
按照Docs,is(Object obj)
只是爲is(equalTo(Object obj))
,在那裏你可以使用is
撰寫更具表現力的匹配的快捷方式。
'is'內部使用'equalsTo'。我認爲它主要是爲了更好的可讀性。 –