Подтвердить что ты не робот

Разница между библиотеками-хранителями-матрицами и ядром CoreMatchers для hamcrest-core

Похоже, что класс hamcrest org.hamcrest.Matchers очень похож на org.hamcrest.CoreMatchers (хотя похоже, что Matchers больше). Почему я должен использовать CoreMatchers (кроме того, что он выглядит немного меньше), и почему эти два класса настолько похожи?

4b9b3361

Ответ 1

Соединители Hamcrest разделены на несколько модулей. "Ядро" включает в себя самые основные классы и абстрактные классы, необходимые для построения других помощников. org.hamcrest.CoreMatchers включает методы factory только для этих сопоставлений. Другие матчи находятся в "библиотечном" модуле, сгруппированном по типам объектов, которые они соответствуют, и являются необязательными. org.hamcrest.Matchers включает оба набора соответствий.

Что вы должны использовать? Я статически импортирую все из последних без проблем. Возможно, время компиляции может занять немного больше времени, но это никогда не было проблемой для меня. Я поставил это в верхней части моих модульных тестов в дополнение к импорту JUnit:

import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;

Это дает лучшую читаемость в методах тестирования.

Ответ 2

Если вы используете Mockito много (как и я), вы можете делать:

import org.mockito.Mockito;

или

static import org.mockito.Mockito.*;

и поскольку класс Mockito расширяет класс Mockito Matchers, то вы можете столкнуться с конфликтами между классами Matchers или их статическими методами. Наличие CoreMatchers позволяет мне использовать ядра CoreMatchers, созданные на основе JUnit, в том же классе, что и Mockito, без необходимости полностью квалифицировать их в своей точке использования.