Разработка через тестирование подразумевает написание теста перед кодом и выполнение определенного цикла :
- Написать тест
- Проверить тест (запустить)
- Написать производственный код
- Проверить тест (запустить)
- Очистить производственный код
- Проверить тест (запустить)
Насколько мне известно, это возможно только в том случае, если ваше решение для разработки позволяет вам очень быстро переключаться между рабочим и тестовым кодом и очень быстро выполнять тест для определенной части производственного кода.
Теперь, хотя существует множество модулей модульного тестирования для C ++ (я использую Bost.Test atm.), Кажется, что на самом деле не существует достойного (для нативного C ++ ) решения Visual Studio (Plugin), которое бы делало TDD цикл переносимый независимо от используемой основы.
«Bearable» означает, что одним щелчком мыши выполняется запуск теста для определенного файла cpp без необходимости вручную настраивать отдельный проект тестирования и т. Д. «Bearable» также означает, что простой тест запускается (связывание!) И выполняется очень быстро. ,
Итак, какие есть инструменты (плагины) и методы, которые делают возможным цикл TDD для разработки на C ++ с Visual Studio?
Примечание: я в порядке с бесплатными или «коммерческими» инструментами.
Пожалуйста : никаких базовых рекомендаций. (Если фреймворк не имеет выделенного плагина Visual Studio и вы хотите порекомендовать этот плагин.)
Редактировать примечание : ответы до сих пор содержали ссылки на то, как интегрировать инфраструктуру модульного тестирования в Visual Studio. Ресурсы более или менее описывают, как заставить UT-инфраструктуру скомпилироваться и запустить ваши первые тесты. Это не то, о чем этот вопрос. Я придерживаюсь мнения, что для действительно продуктивной работы, имея модульные тесты в поддерживаемом вручную (!), Отдельном vcproj от ваших производственных классов, вы добавите столько накладных расходов, что TDD «не возможен». Насколько мне известно, вы не добавляете дополнительные «проекты» в Java или C #, чтобы включить модульные тесты и TDD, и для этого есть веская причина. Это должно было бы возможно с C ++, учитывая правильные инструменты, но кажется (этот вопрос о), что есть очень мало инструментов для TDD / C ++ / VS.
Погуглив, я нашел один инструмент, VisualAssert , который, кажется, направлен в правильном направлении. Однако, на самом деле, похоже, что он не используется широко (по сравнению с CppUnit, Boost.Test и т. Д.).
Изменить: я хотел бы добавить комментарий к контексту для этого вопроса. Я думаю, что это дает хорошее краткое изложение (часть) проблемы: (комментарий Билли ONeal )
Visual Studio не использует «сценарии сборки», которые могут быть изменены пользователем. Один проект производит один двоичный файл. Более того, у Java есть свойство, заключающееся в том, что Java никогда не создает полный двоичный файл - создаваемый двоичный файл представляет собой всего лишь ZIP из файлов классов. Поэтому возможно скомпилировать отдельно JAR-файл вручную (например, 7z). C ++ и C # на самом деле связывают свои двоичные файлы, поэтому, вообще говоря, вы не можете написать такой скрипт. Самое близкое, что вы можете получить - это скомпилировать все по отдельности, а затем выполнить две ссылки (одну для производства, другую для тестирования).
7z
). C ++ и C # на самом деле связывают свои двоичные файлы, поэтому, вообще говоря, вы не можете написать такой скрипт. Самое близкое, что вы можете получить - это скомпилировать все по отдельности, а затем выполнить две ссылки (одну для производства, другую для тестирования).
As far as I am aware, you do not add extra "projects" to a Java or C# thing to enable Unit Tests and TDD,
<- Я не думаю, что это правильно. Обычно у вас есть несколько проектов на C #; Вы не хотите отправлять свой тестовый код в свой рабочий бинарный файл.