Как проверить Единый Связанный Список, используя Assert.assertEquals () - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь проверить односвязный список, используя Assert.assertEqual (ожидаемый, фактический), связанный список имеет индекс узла и значение. Как я могу использовать Assert.assertEquals (), чтобы проверить это.

Это мой код

@Test
void nonEmptyTest() throws ListAccessError {
    SingleLinkedList<Integer> list = new SingleLinkedList<Integer>();
    SingleLinkedList<Integer> expList = new SingleLinkedList<Integer>();
    list.add(0,10);
    list.add(1,20);
    list.add(2,30);
    expList.add(0,10);
    expList.add(1,20);
    expList.add(2,30);
    Assert.assertEquals(expList, list);
}

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Вам необходимо переопределить метод boolean equals(Object obj), чтобы вы могли ожидать подтверждения фактических значений в списке.

Вот пример того, как переопределить

(Примечание: я не знаю вашу реализацию SingleLinkedList, вы можете получить представление из следующего кода и реализовать соответственно)

@Override
public boolean equals(Object obj) {

    if (obj == null)
        return false;
    SingleLinkedList<Integer> listToCompare = (SingleLinkedList<Integer>) obj;
    SingleLinkedList<Integer> thisList = this;
    while (listToCompare != null && thisList != null) {
        if (!listToCompare.getData().equals(thisList.getData()))
            return false;

        listToCompare = listToCompare.getNext();
        thisList = thisList.getNext();
    }
    if (listToCompare == null && thisList == null)
        return true;

    return false;

}
0 голосов
/ 13 января 2019

Если вы хотите сравнить два разных объекта, чтобы выяснить, равны ли они, вашему классу, который определяет эти объекты, обычно необходимо реализовать метод equals (). В противном случае у Java нет возможности узнать, что означает «равенство».

То есть ваша проблема не в модульном тестировании, а в тестируемом классе. модульный тест сделал свое дело: -)

...