JUnit / Hamcrest - org.hamcrest.CoreMatchers.is () устарел. Что мне использовать вместо этого?

Метод org.hamcrest.CoreMatchers.is() устарел.
документ рекомендует использовать - org.hamcrest.CoreMatchers.isA().

Но isA(), похоже, все вместе служит совершенно другому делу.

В порядке. Что бы то ни было, подойдя к моей проблеме. Раньше я использовал is(), как показано ниже

// might be i should not be using it like this, but it works.
assertThat(actualRes, is(true));

Теперь я не могу использовать то же самое с isA(). Выдает ошибку компиляции, не применимую для аргументов (логическое значение)

Я понимаю, что делает isA(). Что я хочу знать, учитывая, что is() устарел, что я должен использовать вместо assertThat(actualRes, is(true))?


person samshers    schedule 24.09.2017    source источник


Ответы (1)


Устаревшей формой CoreMatchers.is() является this один:

это (тип java.lang.Class)

Устарело. вместо этого используйте isA (тип класса).

Итак, для этого isA является правильной альтернативой, но форма CoreMatchers.is(), которую вы используете в этом утверждении: assertThat(actualRes, is(true)); is этот ...

есть (значение T)

Ярлык для часто используемых: (equalTo (x)).

... который не устарел.

Вот код, который может прояснить ситуацию:

boolean actualRes = true;

// this passes because the *value of* actualRes is true
assertThat(actualRes, CoreMatchers.is(true));

// this matcher is deprecated but the assertion still passes because the *type of* actualRes is a Boolean
assertThat(actualRes, CoreMatchers.is(Boolean.class));

// this passes because the *type of* actualRes is a Boolean
assertThat(actualRes, CoreMatchers.isA(Boolean.class));
person glytching    schedule 24.09.2017
comment
ценю ваш ответ. Но, к сожалению, hamcrest.org/ JavaHamcrest / javadoc / 1.3 / org / hamcrest / говорит, что он также устарел. ? Я всего в нескольких шагах от того, чтобы сойти с ума. Любые дальнейшие предложения могут восстановить меня. :-) - person samshers; 24.09.2017
comment
@samshers Я вкратце обновил свой ответ; этот метод: is(java.lang.Class<T> type) устарел, но вы не используете этот метод в этом утверждении: assertThat(actualRes, Matchers.is(true)); - person glytching; 24.09.2017
comment
gr8, понял. tx. - person samshers; 24.09.2017