Новое для модульного тестирования

Я хотел бы знать, как реализовать модульное тестирование в существующем (довольно большом) приложении с помощью visual studio 2008 (.net 2.0).

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

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

Ответ 1

Простой подход:

  • Выберите один из unit test фреймворков (Nunit, MbUnit, Xunit, VS unit test framework,...)
  • Добавить проект для модульных тестов в вашем решении (например, UnitTests).
  • Начните писать тесты.

Для упрощения организации создайте по крайней мере одно пространство имен для каждого проекта в решении, например UnitTest.Project1, UnitTests.Project2,... В зависимости от размера проектов добавьте больше уровней в пространство имен.

Этот тестовый проект является частью решения. Если вы используете какой-либо инструмент непрерывной интеграции, тогда тесты могут автоматически выполняться при каждой фиксации в репозитории исходного кода.

Edit:
Что касается комментария к MS unit test Проблема Framework с созданием модульных тестов, есть проблема с информацией: "Создать unit test" мастер не работает. Похоже, что существуют неподдерживаемые типы проектов, которые мешают мастеру unit test работать правильно. Я просто попытался с одним решением, которое имеет один F # и несколько проектов С#. Я добавил проект модульного тестирования и попытался добавить тесты. У тестового мастера возникли проблемы, пока я не выгрузил проект F #. Тогда все сработало нормально.

Ответ 2

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

то есть

  • Найти ошибку
  • Записать тест, в котором исправлена ​​ошибка
  • Fix

Ответ 3

Я настоятельно рекомендую прочитать эту книгу: Эффективно работать с устаревшим кодом, если вы хотите сделать unit test для существующего кода. Это также хорошая книга о лучших практиках для модульных тестов в целом.

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

EDIT (после вашего комментария) Если вы действительно хотите встроить модульное тестирование в свой цикл разработки, тогда вам нужно перейти на TDD (Test Driven Development). Цель здесь - сначала написать свои модульные тесты, чтобы вы хорошо понимали, что будут делать ваши классы. Конечно, эти тесты потерпят неудачу, но цель состоит в том, чтобы заставить их работать один за другим. Сделайте google на TDD, там много информации.