Junit 测试缺少测试

迪维特爪哇

我正在为 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
    
  • 失败:缺少NextNodeRepairLogic

    Unable to find bug with DoubleLinkedList with missing next node repair logic
    

这些^是我没有考虑的 2 个测试,因为我无法理解这些错误的含义。有没有人知道这些错误可能是什么?

我应该编写什么样的测试来捕捉这些错误?

谢谢 - 一个绝望的学生

约翰·博林格

Javadoc 不一定与规范相同,但假设 Javadoc 是您所获得的全部内容,或者所提供的文档充分地捕获了完整的规范,我将测试以下情况:

错误案例

在每种情况下,验证是否抛出了正确的异常。

  • 论据是否定的
  • 参数等于列表的当前大小
  • 包括列表最初为空时

正常情况

在每种情况下,验证返回的对象是否正确,列表中剩余的元素是否正确且顺序正确。

  • 从单元素列表中删除
  • 从二元素列表中删除第一个元素
  • 从较长的列表中删除第一个元素
  • 从二元素列表中删除最后一个元素
  • 从较长的列表中删除最后一个元素
  • 删除列表的内部元素

目前尚不清楚您具体询问的两个案例是什么意思,但我猜想它们与在删除过程中保持列表内部一致性的缺陷有关。您如何检查此类缺陷取决于列表的结构、它提供的方法以及它公开的内部细节(如果有)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章