проверить, содержит ли список экземпляры классов в определенном порядке, используя hamcrest - PullRequest
1 голос
/ 14 марта 2019

Привет! Я пишу модульный тест, в котором мне нужно утверждать, что список содержит объекты нескольких классов в определенном порядке. Я хочу сделать это с помощью Hamcrest.

Прямо сейчас я утверждаю это как -

assertThat(actual, hasItem(isA(A.class)));
assertThat(actual, hasItem(isA(B.class)));
assertThat(actual, hasItem(isA(C.class)));

Здесь я хочу проверить, что элементы находятся в порядке A-> B-> C. Я пытался написать это как -

assertThat(actual, contains(isA(A.class), isA(B.class), isA(C.class)));

но это не поддерживается, есть ли способ добиться этого с помощью хамкрестов?

1 Ответ

1 голос
/ 14 марта 2019

Использовать этот метод :

public static <E> Matcher<java.lang.Iterable<? extends E>> containsInRelativeOrder(Matcher<? super E>... itemMatchers)

Из документов:

Создает средство сопоставления для Iterables, которое соответствует при однократном прохождении над проверяемым объектом Iterable.возвращает ряд элементов, каждый из которых удовлетворяет соответствующему сопоставителю в указанных сопоставителях, в том же относительном порядке.Например: assertThat (Arrays.asList ("a", "b", "c", "d", "e"), содержитInRelativeOrder (equalTo ("b"), equalTo ("d")))

В вашем случае это может выглядеть следующим образом:

assertThat(actual, containsInRelativeOrder(isA(A.class), isA(B.class), isA(C.class)));

Доступно с Hamcrest 2.0.0.0.

...