2013-03-22 2 views
3

Что касается JUnit4 assertThat, я видел, как это делается в обоих направлениях. Правильно ли это над другим или это все равно?JUnit4: is() vs is (notNullValue())

byte[] val; 
... 
assertThat(val, notNullValue()); 
     --vs-- 
assertThat(val, is(notNullValue())); 

Второй вариант гласит: «Утверждать, что val не является нулевым», что звучит лучше. (С другой стороны, он может быть избыточным.)

Я использовал оба способа, и они, похоже, дают правильные результаты.

+1

Если цель состоит в том, чтобы утверждать, что значение не равно null, я просто использовал бы 'Assert.assertNotNull (val)'. – Magnilex

+0

@MagnusTengdahl: Я использую assertThat вместо assertNotNull, потому что напечатанное сообщение дает больше информации (например, что-то вроде строки «ожидаемый X», но X был нулевым »). – Daniel

+1

Я понимаю. Как насчет 'assertNull (java.lang.String, java.lang.Object object)' then? :) Который принимает сообщение. – Magnilex

ответ

5

The Hamcrest documentation говорит:

Hamcrest стремится сделать ваши тесты читаемыми, насколько это возможно. Например, совпадение is - это оболочка, которая не добавляет никакого дополнительного поведения в базовый соединитель. Следующие утверждения эквивалентны:

assertThat(theBiscuit, equalTo(myBiscuit)); 
assertThat(theBiscuit, is(equalTo(myBiscuit))); 
assertThat(theBiscuit, is(myBiscuit)); 

Последняя форма допускается, так как is(T value) перегружен вернуть is(equalTo(value)).

+0

Благодарим за указание ссылки. Я читал wiki-юнита, но не документацию Hamcret. – Daniel

2

Нет разницы между этими двумя способами. В основном был введен метод is() для улучшения удобочитаемости.