Это орг.тесты JUnit.Утверждать.assertThat лучше, чем орг.hamcrest.Матчерассерт.assertThat?
Я новичок в JUnit и Hamcrest и хотел бы получить советы по лучшей практике, чтобы я мог решить, какую документацию изучать в первую очередь.
для начала, какой из этих assertThat
методы лучше?
- org.тесты JUnit.Утверждать.assertThat (от junit-4.11.jar)
- org.hamcrest.Матчерассерт.assertThat (от hamcrest-core-1.3.jar)
по словам одного человека в прошлом году,"JUnit имеет assertThat метод, но hamcrest имеет свой собственный способ assertThat, что делает то же самое.".
по словам кого-то в начале этого года, Hamcrest "потенциально может дать лучшие сообщения об ошибках, потому что сопоставитель вызывается для описания несоответствия".
трудно сказать, какие версии Junit и Hamcrest были сравнены в этих сообщениях. Поэтому я хотел бы получить рекомендацию, основанную на самых последних выпущенных версиях.
2 ответов
это почти то же самое.
последние версии JUnit теперь включают hamcrest.
Infact org.тесты JUnit.Утверждать.assertThat ' s метод подпись
public static <T> void assertThat(T actual,
org.hamcrest.Matcher<T> matcher)
который вы заметите, использует hamcrest matchers.
вы все еще можете включить свою собственную версию hamcrest, потому что JUnit не обновляется очень часто и не всегда может использовать последнюю версию hamcrest.
согласно maven ПФЛ, JUnit 4.11 использует hamcrest 1.3, который, я считаю, является самым последним на момент написания этой статьи.
редактировать
Я только что прочел вашу вторую статью http://blog.code-cop.org/2014/02/assert-or-matcherassert.html и он описывает 2 небольшие различия в hamcrest assertThat
это делает его более полезным:
- когда совпадение не удается, сообщение об ошибке включает в себя то, что было другим, а не "ожидалось X, но было Y". пользовательские Hamcrest matchers может включите более подробную информацию о том, что именно было неправильно, реализовав
describeMismatch()
- на
assertThat
подпись отличается в hamcrest с помощьюT actual, Matcher<? super T> matcher
что позволяет вычислителей супер типов (как совпадений сравнивать числа и дубли). Обычно это не имеет значения, но когда вам это нужно, это хорошая функция.
чтобы использовать org.hamcrest.MatcherAssert.assertThat