Сопоставитель stringContainsInAnyOrder в Hamcrest?

В Hamcrest есть StringContainsInOrder Matcher.

Как я могу утверждать, что строка содержит набор строк в любом порядке?


person prasopes    schedule 02.11.2015    source источник
comment
можно ли легко разделить элементы в строке? есть ли разделитель?   -  person Ruben    schedule 02.11.2015
comment
@ Рубен, к сожалению, нет.   -  person prasopes    schedule 02.11.2015


Ответы (2)


Вы можете комбинировать несколько contains совпадений.

assertThat("this is a string", allOf(
  contains("string"),
  contains("this"),
  contains("a")));
person Stefan Birkner    schedule 11.11.2015

Это невозможно из-за того, как Hamcrest проверяет коллекцию.

Он перебирает его, смотрите здесь: https://code.google.com/p/hamcrest/source/browse/trunk/hamcrest-java/hamcrest-library/src/main/java/org/hamcrest/text/StringContainsInOrder.java?r=375

Вы могли:

1) проверить каждый заказ, если это короткая строка (неэффективно)

2) сортировать и тестировать несколько раз, полагая, что это покроет более 90% случаев (неадекватно)

Надеюсь, поможет.

person m.aibin    schedule 02.11.2015