2017-05-25 20 views
2

我是新的使用hamcrest。當我發現如何使用它時,我一直懷疑何時使用isequalToHamcrest何時使用是或等於

isequalTo之間是否有區別,但它在概念上還是偶爾?它似乎表現一樣。

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

爲什麼你會用一個而不是另一個?

+1

'is'內部使用'equalsTo'。我認爲它主要是爲了更好的可讀性。 –

回答

4

用於Matchers的Javadoc非常清晰。所有重載形式中的is都有表現力。

「主」 isis(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。你應該使用你認爲最清楚地傳達你的意圖的任何一個。

1

按照Docsis(Object obj)只是爲is(equalTo(Object obj)),在那裏你可以使用is撰寫更具表現力的匹配的快捷方式。

相關問題