Как Вы интегрируете подход TDD с VisualStudio?

Если вы хотите, чтобы структура имела определенный размер с GCC, например, используйте __attribute__((packed)) .

В Windows вы можете установить выравнивание в один байт при использовании cl .exe компилятор с опцией / Zp .

Обычно ЦП получает доступ к данным, который является кратным 4 (или 8), зависящей от платформы, а также от компилятор.

Итак, это вопрос выравнивания в основном.

У вас должны быть веские причины для его изменения.

11
задан Jay Bazuzi 22 September 2008 в 02:17
поделиться

7 ответов

Один из проектов в моей компании делает точно это. Мы используем платформу модульного теста под названием CXXTest (http://cxxtest.sourceforge.net/guide.html). Нам действительно нравится эта платформа за C++, потому что это только требует, чтобы Вы записали заголовочный файл, который содержит Ваши модульные тесты..CPP файлы создаются сценарием (и Python и сценарии Perl, обеспечиваются).

Мы интегрируемся с Visual Studio путем обеспечения шага сборки сообщения, который создает модульные тесты (если им нужно здание), и затем выполняет их. Вывод (показывая, что передало и что перестало работать) отображен в окне вывода - Вы никогда не должны оставлять IDE.

3
ответ дан 3 December 2019 в 09:42
поделиться

Я использую Среду тестирования Повышения. Я склонен разделять свой код на .lib файлы и буду иметь отдельный консольный режим тестовым проектом EXE для каждого. Когда тестовый проект создается, он использует 'Этап сборки сообщения' для запуска себя, таким образом запуская тесты. Вы могли сделать каждый тестовый проект зависимостью Вашего главного приложения так, чтобы каждый раз это создало, все тесты запущены сначала, но это может быть трудоемким. Вместо этого я склонен выполнять тестовые проекты вручную по мере необходимости, но моя автоматизированная ночная система сборки выполнит все тестовые проекты как само собой разумеющееся (я пишу сценарий этого и если какие-либо тесты перестали работать, сбои сборки, и я получаю уведомление по электронной почте).

Больше деталей здесь.

2
ответ дан 3 December 2019 в 09:42
поделиться
  • Я нахожу следующую иерархию папок полезной. Создайте код и тесты как подпапки ProjectFolder. Создайте 2 решения code\Project.sln и tests\Tests.sln. Теперь для каждой библиотеки классов или исполняемого файла, созданного, например, Customers.dll, имеют соответствующий тест dll. Таким образом, code\Customers\Customers.csproj будет иметь tests\Customers\TestCustomers.csproj, который ссылки первый.
  • Интеграция CPPUnit в Visual Studio была бы на строках выбора правильного приложения в Свойствах проекта.. Настройки 'Debug'. Я думаю, что эта страница имеет то, что у Вас должно быть выполнение теста одно нажатия клавиши + сообщающий в IDE.
2
ответ дан 3 December 2019 в 09:42
поделиться

Моя команда в настоящее время использует систему, где у нас есть автоматизированная ночная сборка (который может также быть выполнен из панели инструментов сборки проекта любым), который включает "тестовое" решение для VS2k5. Тестовое решение содержит все проекты модульного теста; один проект модульного теста для каждой "единицы" кода в основном проекте.

Когда автоматизированная сборка работает, она создает основное решение, затем тестовое решение, и наконец выполняет все исполняемые файлы, произведенные тестовым решением (сценарий Perl склеивает это). Результаты компиляции, а также выполнения теста (ВЫХОД _ УСПЕХ, ВЫХОД _ ОТКАЗ) используются для обновления панели инструментов сборки проекта.

Тот ВЫХОД _ прием ОТКАЗА может также быть применен к сделанному на заказ шагу основного проекта: если модульный тест сделанный на заказ ВЫХОД возвратов шага _ ОТКАЗ, то сама сборка перестала работать.

1
ответ дан 3 December 2019 в 09:42
поделиться

Вот то, что я делаю:

  • Создайте тестовый исполнимый проект в Вашем основном решении, которое использует источник только от единицы, тестов единицы и среды тестирования.
  • Заставьте исполнитель тестов генерировать текстовый файл на успешном выполнении тестов, таким образом, Visual Studio может отследить зависимости.
  • Добавьте проект запустить Ваш исполнитель тестов и генерировать тестовый файл. Это означает, что у Вас теперь есть два проекта на тест.
  • Сделайте исполнитель тестов зависимостью библиотеки, которая включает единицу.

Лично, я не думаю, что среда тестирования (Тест Google, тест Повышения, CppUnit, и т.д.) имеет значение так очень. Большинство в значительной степени функционально эквивалентно.

Я не совсем доволен количеством сгенерированных проектов, но я считаю это Visual Studio проблема GUI, в том смысле, что ее на самом деле довольно полезное, чтобы включать эти проекты как это в целях, таких как отладка.

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

2
ответ дан 3 December 2019 в 09:42
поделиться

Можно также использовать управляемый С++ для записи модульных тестов в Visual Studio, с помощью платформы поблочного тестирования, это встроено.

1
ответ дан 3 December 2019 в 09:42
поделиться

Взгляните на CUnitWin32. Существует пример, включенный также.

0
ответ дан 3 December 2019 в 09:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: