如何使用 Assert.assertEquals() 测试单链表
How to test Single Linked List using Assert.assertEquals()
我正在尝试使用 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);
}
如果您想比较两个不同的对象以确定它们是否相等,定义这些对象的 class 通常需要实现 equals() 方法。否则 Java 无法知道 'equality' 应该是什么意思。
也就是说,你的问题不在单元测试中,而是在class正在测试中。这
单元测试完成了它的工作:-)
您需要重写 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;
}
我正在尝试使用 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);
}
如果您想比较两个不同的对象以确定它们是否相等,定义这些对象的 class 通常需要实现 equals() 方法。否则 Java 无法知道 'equality' 应该是什么意思。
也就是说,你的问题不在单元测试中,而是在class正在测试中。这 单元测试完成了它的工作:-)
您需要重写 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;
}