Hamcrest когда использовать или equalTo
Я новичок в использовании hamcrest. Пока я открываю, как его использовать, у меня были сомнения в том, когда использовать is или equalTo.
есть ли разница между is и equalTo, хотя это концептуально или иногда? Кажется, он ведет себя так же.
Assert.assertThat(actual, equalTo("blue"));
Assert.assertThat(actual, is("red"));
почему вы должны использовать один вместо другого?
2 ответов
Javadoc для Matchers довольно ясно. is во всех его перегруженных формах есть для выразительности.
"основные" is is is(Matcher<T> matcher) которых:
украшает другой 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 составить более выразительные matchers.