Тестирование общего класса - PullRequest
3 голосов
/ 13 июня 2010

Больше, чем вопрос, по сути, это попытка сравнить заметки с другими людьми. Я написал общий класс истории, который подражает функциональность истории браузера. Я пытаюсь завернуть Обдумайте, как далеко продвинуться при написании модульных тестов. я используя NUnit. Пожалуйста, поделитесь своими подходами к тестированию ниже.

Полный код для класса истории: здесь (http://pastebin.com/ZGKK2V84).

Ответы [ 3 ]

8 голосов
/ 13 июня 2010

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

  • Протестируйте каждый метод и свойство в вашем общедоступном API, убедившись, что каждый из них соответствующим образом изменяет внутренние коллекции при добавлении "реальных" данных
  • Проверка добавления недопустимых данных в каждый метод (например, должен ли он принимать нулевые ссылки), чтобы убедиться, что вы получаете либо соответствующие исключения, либо желаемое поведение
  • Учитывая, что это универсальный класс, я бы протестировал это как с типом значения, так и с ссылочным типом (если вы не решите добавить ограничение к одному или другому)
3 голосов
/ 13 июня 2010

Что конкретно из-за того, что универсальный класс отличается от тестирования по сравнению с неуниверсальным классом в ваших глазах?Я не вижу проблемы:)

Просто введите T в модульных тестах как некоторый тип, такой как int, чтобы у вас был экземпляр History<int>, а затем протестируйте все интересныелогика класса как обычно.Например, если история не существует, движение назад невозможно, движение вперед означает, что вы можете двигаться назад и так далее.Обычные вещи :) Получите книгу или прочитайте некоторые учебные пособия по тестированию модулей, если вы не знаете, что делать.

1 голос
/ 13 июня 2010

Напишите универсальный тестовый класс, который отражает универсальный класс. Затем создайте другой тестовый класс, который создает экземпляр этого тестового класса с парой аргументов различных типов (хороший тип значения и ссылочный тип - хорошее начало).

...