如何使用Assert.assertEquals()

时间:2019-01-12 23:10:31

标签: java testing junit singly-linked-list

我正在尝试使用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 :(得分:0)

如果要比较两个不同的对象以找出它们是否相等,则定义这些对象的类通常需要实现equals()方法。否则,Java无法知道“平等”的含义。

也就是说,您的问题不在单元测试中,而在被测试的类中。的 单元测试完成了它的工作:-)

答案 1 :(得分:0)

您需要重写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;

}
相关问题