Как Вы кратко утверждали бы равенство Collection
элементы, конкретно a Set
в JUnit 4?
Вы можете утверждать, что два Set
равны друг другу, что вызывает Set
equals ( )
метод .
public class SimpleTest {
private Set<String> setA;
private Set<String> setB;
@Before
public void setUp() {
setA = new HashSet<String>();
setA.add("Testing...");
setB = new HashSet<String>();
setB.add("Testing...");
}
@Test
public void testEqualSets() {
assertEquals( setA, setB );
}
}
Этот @Test
пройдет успешно, если два Set
имеют одинаковый размер и содержат одинаковые элементы.
с hamcrest:
assertThat(s1, is(s2));
с plain assert:
assertEquals(s1, s2);
NB:t используется метод equals() класса concrete set
Проверьте эту статью . Один из примеров оттуда:
@Test
public void listEquality() {
List<Integer> expected = new ArrayList<Integer>();
expected.add(5);
List<Integer> actual = new ArrayList<Integer>();
actual.add(5);
assertEquals(expected, actual);
}
Особенно интересен случай, когда вы сравниваете
java.util.Arrays$ArrayList<[[name,value,type], [name1,value1,type1]]>
и
java.util.Collections$UnmodifiableCollection<[[name,value,type], [name1,value1,type1]]>
. Пока единственное решение, которое я вижу, это преобразовать их оба в множества
assertEquals(new HashSet<CustomAttribute>(customAttributes), new HashSet<CustomAttribute>(result.getCustomAttributes()));
. Или я мог бы сравнить их по элементам. по элементу.