JUnit 4 сравнивает Наборы

Как Вы кратко утверждали бы равенство Collection элементы, конкретно a Set в JUnit 4?

96
задан Neuron 19 February 2019 в 14:16
поделиться

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 имеют одинаковый размер и содержат одинаковые элементы.

98
ответ дан 24 November 2019 в 05:39
поделиться

с hamcrest:

assertThat(s1, is(s2));

с plain assert:

assertEquals(s1, s2);

NB:t используется метод equals() класса concrete set

15
ответ дан 24 November 2019 в 05:39
поделиться

Проверьте эту статью . Один из примеров оттуда:

@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);  
}  
2
ответ дан 24 November 2019 в 05:39
поделиться

Особенно интересен случай, когда вы сравниваете

   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()));

. Или я мог бы сравнить их по элементам. по элементу.

7
ответ дан 24 November 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: