Я считаю, что это должен быть действительно простой вопрос. Но почему-то не могу найти ответ в гугле.
Предположим, что у меня есть 2 списка строк. Первый содержит "String A" и "String B", второй содержит "String B" и "String A" (обратите внимание на разницу в порядке). Я хочу протестировать их с помощью JUnit, чтобы проверить, содержат ли они точно такие же строки.
Есть ли какое-либо утверждение, которое проверяет равенство строк, игнорирующих порядок? Для данного примера org.junit.Assert.assertEquals выдает AssertionError
java.lang.AssertionError: expected:<[String A, String B]> but was:<[String B, String A]>
Обходной путь заключается в том, чтобы сначала отсортировать списки, а затем передать их утверждению. Но я хочу, чтобы мой код был максимально простым и чистым.
Я использую Hamcrest 1.3, JUnit 4.11, Mockito 1.9.5.
list1.removeAll(list2)
следует оставитьlist1
пустым. Я думаю, вы можете опираться на это, чтобы получить то, что вы хотите. - person RainMaker   schedule 02.04.2014containsAll
иremoveAll
- этоO(n²)
для списков при их сортировке, а проверка на равенство -O(nlogn)
.Collections.sort(list1); Collections.sort(list2); assertTrue(list1.equals(list2));
тоже чистый. - person Alexis C.   schedule 02.04.2014