有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用断言测试单链表。assertEquals()

我正在尝试使用Assert测试单链表。assertEqual(预期、实际)链表有一个节点索引和一个值。如何使用断言。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) 个答案

  1. # 1 楼答案

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

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

  2. # 2 楼答案

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