Junit тестирование отсутствующих тестов - PullRequest
0 голосов
/ 26 января 2019

Я пишу тесты для 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 теста, которые они будут выполнять, но не знаю, что означает ошибка.

  • FAIL: MissingBackFieldRepairLogic

    Unable to find bug with DoubleLinkedList with missing back field repair logic
    
  • FAIL: MissingNextNodeRepairLogic

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

Это ^ 2 теста, которые я не учел, так как не могу понять, что означают эти ошибки. Кто-нибудь имеет представление о том, что эти ошибки могут быть?

А какие тесты я должен написать, чтобы отследить эти ошибки?

Спасибо -Отчаявшийся студент

1 Ответ

0 голосов
/ 26 января 2019

Javadoc - это не то же самое, что спецификации, но если предположить, что Javadoc - это все, что вам дано или что представленные документы адекватно отражают полные спецификации, я бы протестировал следующие случаи:

Ошибкаслучаи

В каждом из этих случаев убедитесь, что выдается правильное исключение.

  • Аргумент отрицательный
  • Аргумент равен текущемуразмер списка
  • Включая, когда список изначально пуст

Нормальные случаи

В каждом из этих случаев убедитесь, что правильный объектвозвращается, и что элементы, оставшиеся в списке, являются правильными и в правильном порядке.

  • Удаление из одноэлементного списка
  • Удаление первого элемента из двухэлементногосписок элементов
  • Удаление первого элемента из более длинного списка
  • Удаление последнего элемента из двухэлементного списка
  • Удаление последнего элемента из более длинного спискаt
  • Удаление внутреннего элемента списка

Не ясно, что означают два случая, о которых вы конкретно спрашивали, но я думаю, что они связаны с недостатками в поддержаниивнутренняя согласованность списка при удалении.Как вы можете проверить наличие таких недостатков, зависит от структуры списка, методов, которые он предоставляет, и от того, какие внутренние детали, если таковые имеются, он раскрывает.

...