Новое для модульного тестирования
Я хотел бы знать, как реализовать модульное тестирование в существующем (довольно большом) приложении с помощью 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, там много информации.