Junit 测试缺少测试
Junit testing missing tests
我正在为 Junit 编写测试以测试我编写的删除函数:
/**
* Deletes the item at the given index. If there are any elements located at a higher
* index, shift them all down by one.
*
* @throws IndexOutOfBoundsException if the index < 0 or index >= this.size()
*/
@Override
public T delete(int index) {
if (index < 0 || index > this.size()) {
throw new IndexOutOfBoundsException();
} else if (isEmpty()) {
throw new EmptyContainerException();
} else {
Node<T> current = front;
if (index == 0) {
front = current.next;
current.prev = null;
size--;
return current.data;
} else if (index == size - 1) {
return remove();
} else {
current = traverse(current, index);
Node<T> temp = current;
current.prev.next = current.next;
current.next.prev = current.prev;
size--;
return temp.data;
}
}
}
此方法适用于同时具有前后节点的双链表。
问题:我们的学院将 运行 针对我们编写的测试的错误代码,以确定我们是否编写了足够的测试来捕获错误代码和异常。
我知道他们将要进行的 2 项测试 运行,但不知道错误是什么意思。
失败:MissingBackFieldRepairLogic
Unable to find bug with DoubleLinkedList with missing back field repair logic
失败:MissingNextNodeRepairLogic
Unable to find bug with DoubleLinkedList with missing next node repair logic
这些 ^ 是我没有考虑的 2 个测试,因为我无法理解这些错误的含义。有谁知道这些错误可能是什么?
我应该编写什么样的测试来捕获这些错误?
谢谢
-绝望的学生
Javadoc 不一定与规范相同,但假设 Javadoc 就是您提供的全部内容,或者所提供的文档充分包含了完整的规范,我将测试这些情况:
错误案例
在每种情况下,验证是否引发了正确的异常。
- 参数是否定的
- 参数等于列表的当前大小
- 包括列表最初为空的情况
正常情况
在每种情况下,验证是否返回了正确的对象,列表中剩余的元素是否正确,并且顺序是否正确。
- 从单元素列表中删除
- 从双元素列表中删除第一个元素
- 从较长的列表中删除第一个元素
- 从双元素列表中删除最后一个元素
- 从较长的列表中删除最后一个元素
- 删除列表的内部元素
不清楚你具体问的这两种情况是什么意思,但我猜应该是在删除过程中维护列表内部一致性的缺陷。您如何检查此类缺陷取决于列表的结构、它提供的方法以及它公开的内部细节(如果有的话)。
我正在为 Junit 编写测试以测试我编写的删除函数:
/**
* Deletes the item at the given index. If there are any elements located at a higher
* index, shift them all down by one.
*
* @throws IndexOutOfBoundsException if the index < 0 or index >= this.size()
*/
@Override
public T delete(int index) {
if (index < 0 || index > this.size()) {
throw new IndexOutOfBoundsException();
} else if (isEmpty()) {
throw new EmptyContainerException();
} else {
Node<T> current = front;
if (index == 0) {
front = current.next;
current.prev = null;
size--;
return current.data;
} else if (index == size - 1) {
return remove();
} else {
current = traverse(current, index);
Node<T> temp = current;
current.prev.next = current.next;
current.next.prev = current.prev;
size--;
return temp.data;
}
}
}
此方法适用于同时具有前后节点的双链表。
问题:我们的学院将 运行 针对我们编写的测试的错误代码,以确定我们是否编写了足够的测试来捕获错误代码和异常。
我知道他们将要进行的 2 项测试 运行,但不知道错误是什么意思。
失败:MissingBackFieldRepairLogic
Unable to find bug with DoubleLinkedList with missing back field repair logic
失败:MissingNextNodeRepairLogic
Unable to find bug with DoubleLinkedList with missing next node repair logic
这些 ^ 是我没有考虑的 2 个测试,因为我无法理解这些错误的含义。有谁知道这些错误可能是什么?
我应该编写什么样的测试来捕获这些错误?
谢谢 -绝望的学生
Javadoc 不一定与规范相同,但假设 Javadoc 就是您提供的全部内容,或者所提供的文档充分包含了完整的规范,我将测试这些情况:
错误案例
在每种情况下,验证是否引发了正确的异常。
- 参数是否定的
- 参数等于列表的当前大小
- 包括列表最初为空的情况
正常情况
在每种情况下,验证是否返回了正确的对象,列表中剩余的元素是否正确,并且顺序是否正确。
- 从单元素列表中删除
- 从双元素列表中删除第一个元素
- 从较长的列表中删除第一个元素
- 从双元素列表中删除最后一个元素
- 从较长的列表中删除最后一个元素
- 删除列表的内部元素
不清楚你具体问的这两种情况是什么意思,但我猜应该是在删除过程中维护列表内部一致性的缺陷。您如何检查此类缺陷取决于列表的结构、它提供的方法以及它公开的内部细节(如果有的话)。