Как пойти об организации ремня безопасности модульного теста для кода Visual C++ прежней версии?

Список

Для наблюдения списка текущих буферов я использую:

:ls
<час>

Открытие

To открывают новый файл, я использую

:e ../myFile.pl

с расширенным заполнением клавишей Tab (поместите set wildmenu в Ваш .vimrc).

Примечание: можно также использовать :find, который будет искать ряд путей Вас, но необходимо настроить те пути сначала.

<час>

Переключение

Для переключения между всеми открытыми файлами я использую

:b myfile

с расширенным заполнением клавишей Tab (все еще set wildmenu).

Примечание: :b# выбирает последний посещаемый файл, таким образом, можно использовать его для переключения быстро между двумя файлами.

<час>

Используя окна

Ctrl-W s и Ctrl-W v для разделения текущего окна горизонтально и вертикально. Можно также использовать :split и :vertical split (:sp и :vs)

Ctrl-W w для переключения между открытыми окнами, и Ctrl-W h (или j или k или l) для навигации через открытые окна.

Ctrl-W c для закрытия текущего окна, и Ctrl-W o для закрытия всех окон кроме текущего.

Стартовая энергия с -o или -O флаг открывает каждый файл в своем собственном разделении.

<час>

Со всеми они мне не нужны вкладки в Vim, и мои пальцы находят мои буферы, не мои глаза.

Примечание: если Вы хотите, чтобы все файлы перешли к тому же экземпляру Vim, запустите Vim с --remote-silent опция.

5
задан thelsdj 21 July 2009 в 01:08
поделиться

2 ответа

Во-первых, я настоятельно рекомендую книгу Майкла Фезера " Эффективная работа с устаревшим кодом ». Все дело в том, как добавить автоматические модульные тесты в устаревшее приложение, в котором нет тестов. Если вам интересно, «как мне вообще начать тестировать эту кучу кода», то эта книга для вас.

Майкл также является автором CppUnit, среды тестирования с открытым исходным кодом, подобной NUnit, для кода C ++. Вы можете найти его здесь: http://sourceforge.net/projects/cppunit/ .

Один из простых способов добавления тестов - это добавить конфигурацию UnitTest в ваше решение. Эта конфигурация будет компилировать ваш код, но вместо того, чтобы связывать его с вашим main.CPP, вы исключаете свой main.cpp из сборки и включаете UnitTestMain.cpp, где вы размещаете вызовы для выполнения модульных тестов. Мы начали этот путь очень давно, когда еще ничего не знали. Тем не менее, вы тратите много времени, включая и исключая все различные модули testMyCode.cpp для различных конфигураций, и через некоторое время это утомляет. Мы обнаружили, что разработчикам этот подход не слишком нравится.

Намного лучший подход - добавить в решение проект модульного тестирования с зависимостью сборки от вашего реального проекта. Если проект называется Foo.vcproj, назовите его Foo_test.vcproj. Этот проект содержит только ваш тестовый код, он # включает ваши заголовки Foo и ссылается на ваши скомпилированные модули fooCode.obj. Добавьте вызов для выполнения Foo_test.exe в качестве этапа после сборки сборки Foo_test, и он автоматически запускает модульные тесты во время сборки. Если какие-либо модульные тесты терпят неудачу, сборка не выполняется. Если на вашем сервере сборки настроены закрытые проверки, никто не сможет регистрировать изменения, нарушающие существующие тесты.

5
ответ дан 14 December 2019 в 19:21
поделиться

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

Одно из решений - иметь отдельную конфигурацию проекта (например, Debug, Release и Test) и поместите тестовый код в отдельные файлы, помеченные как «Excluded From Build» в конфигурациях Debug и Release. Вы можете либо иметь простой код для запуска тестов в #ifdef , либо иметь заглушку тестового средства запуска, которое включено в не тестовые сборки.

Другой вариант (хотя он довольно хакерский ) заключается в том, чтобы ваш тестовый код запускался из WinMain , а ваш производственный код - из обычного старого main . При сборке с использованием подсистемы "Windows" ваши тесты будут выполняться, и при сборке для подсистемы консоли ваш производственный код будет работать. Однако я не знаю, удалит ли компоновщик не вызываемые тестовые функции из производственной сборки.

0
ответ дан 14 December 2019 в 19:21
поделиться
Другие вопросы по тегам:

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