Разница между Hamcrest-library Matchers и hamcrest-core CoreMatchers
похоже hamcrest org.hamcrest.Matchers класс очень похож на org.hamcrest.CoreMatchers (хотя это выглядит как Matchers больше). Почему я решил использовать CoreMatchers (кроме того, что похоже, что класс немного меньше), и почему эти два класса так похожи?
3 ответа:
Hamcrest matchers разделены на несколько модулей. "Ядро" включает в себя самые основные сопоставители и абстрактные классы, необходимые для построения других сопоставителей.
org.hamcrest.CoreMatchersвключает заводские методы только для этих сопоставителей. Другие сопоставители находятся в модуле" библиотека", сгруппированном по типам объектов, которым они соответствуют, и являются необязательными.org.hamcrest.Matchersвключает в себя оба набора вычислителей.что вы должны использовать? Я статически импортирую все из последнего без каких-либо проблем. Возможно время компиляции может занять немного больше времени, но это никогда не было проблемой для меня. Я поставил это в верхней части моих модульных тестов в дополнение к импорту JUnit:
import static org.hamcrest.MatcherAssert.*; import static org.hamcrest.Matchers.*;Это дает лучшую читаемость в методы испытаний.
если вы используете Mockito много (как и я), вы можете делать:
import org.mockito.Mockito;или
static import org.mockito.Mockito.*;и с
Mockitoкласс расширяет MockitoMatchersкласс, то вы можете в конечном итоге с конфликтами между классами Matchers или их статическими методами. Наличие CoreMatchers позволяет мне использовать JUnit-производные CoreMatchers в том же классе, что и Mockito, без необходимости полной квалификации их в точке использования.
если вы используете тесты JUnit Android (не подключенные тесты), то
CoreMatchers, кажется, доступны внутри уже включенных junit модуль, в то время какMatchersнет.таким образом, чтобы сэкономить накладные расходы и избежать импорта другой библиотеки, рассмотрите возможность использования
CoreMatcherверсии этих классов, если они достаточно:assertThat(chrome.twiddle(), is(equalTo(0)));можно использовать только
CoreMatchers.