Поблочное и интеграционное тестирование в [закрытом] C++

некоторая хорошая информация здесь также..

, Когда Изменить Версии Файла/Блока

, Когда Изменить Версии Файла/Блока, В первую очередь, версии файла и версии блока не должны совпадать друг с другом. Я рекомендую, чтобы версии файла изменились с каждой сборкой. Но, don’t изменяют версии блока с каждой сборкой именно так, что можно сказать различие между двумя версиями того же файла; используйте версию файла для этого. Решение, когда изменить версии блока, берет некоторое обсуждение типов сборок для рассмотрения: поставка и непоставка.

Непоставлющиеся Сборки В целом, я рекомендую продолжать не поставляться, блок присваивает версию тому же между поставкой сборок. Это избегает проблем загрузки сборки со строгим именем из-за несоответствий версии. Некоторые люди предпочитают использовать политику издателя перенаправить новые версии блока для каждой сборки. Я рекомендую против который для непоставки сборок, однако: это doesn’t избегает всех загружающихся проблем. Например, если партнер копирует Ваше приложение с помощью xcopy, они не могут знать для установки политики издателя. Затем Ваше приложение будет повреждено для них, даже при том, что оно работает просто великолепно на Вашей машине.

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

Поставлющиеся Сборки Что касается того, зависит ли it’s хорошая идея изменить ту версию для поставки сборок, это от того, как Вы хотите, чтобы привязка работала на конечных пользователей. Вы хотите, чтобы эти сборки были бок о бок или оперативные? Есть ли между двумя сборками много изменений? Они собираются повредить некоторых клиентов? Вы заботитесь, что это повреждает их (или Вы хотите вынудить пользователей использовать Ваши важные обновления)? Если да, необходимо рассмотреть постепенное увеличение версии блока. Но с другой стороны полагайте, что выполнение, который слишком много раз может замусорить user’s диск устаревшими блоками.

, Когда Вы Изменяете Свои Версии блока Для изменения hardcoded версий на новую, я рекомендую установить переменную на версию в заголовочном файле и заменить жесткое кодирование в источниках с переменной. Затем выполните препроцессор во время сборки, чтобы вставить правильную версию. Я рекомендую изменить версии прямо после поставки, не прямо прежде, так, чтобы там был пора больше поймать ошибки из-за изменения.

6
задан Jakub Arnold 23 September 2009 в 23:03
поделиться

8 ответов

Мы используем Google Test Framework . И мы не запускаем тесты для каждой компиляции на машинах разработчиков. Это работа для сервера сборки.

5
ответ дан 8 December 2019 в 03:27
поделиться

The Boost Test Library gives you unit tests etc.

7
ответ дан 8 December 2019 в 03:27
поделиться

Для C ++ существует множество сред модульного тестирования. 2, с которыми у меня больше всего опыта, - это CppUnit и CxxTest. Я предпочитаю CxxTest, так как мне проще не регистрировать мои тестовые примеры явно, как это делается с CppUnit. есть плагин eclipse для CxxTest, но я не знаю, есть ли он для NetBeans. Время компиляции не должно быть проблемой для хорошо написанного C ++ и определенно не является причиной пропускать модульные тесты / tdd.

Для приемочного тестирования я использовал exactor. Это инструмент на основе Java, но его нетрудно использовать в среде C ++.

5
ответ дан 8 December 2019 в 03:27
поделиться

Если вы использовали JUnit и jMock, я бы порекомендовал вам:

Googlemock и без проблем взаимодействуют с Googletest .

Для TDD я сам использую

с некоторыми сценариями, написанными мной. И все это хорошо работает.

2
ответ дан 8 December 2019 в 03:27
поделиться

Shameless plug: Have a look at cfix and Visual Assert.

0
ответ дан 8 December 2019 в 03:27
поделиться

unittest ++

0
ответ дан 8 December 2019 в 03:27
поделиться

Для интегрированного тестирования, могу ли я предложить C ++ реализацию FIT (Framework for Integrated Test) - http://fit.c2.com aka CEEFIT ( http: // ceefit .woldrich. com /? page = Home ) (на момент написания этой статьи сайт ceefit не работал. Надеюсь, он скоро вернется). Я лично использовал CEEFIT для запуска интегрированных тестов на устаревших базах кода C ++, которые взаимодействуют с API платформы автоматизированного проектирования (SolidWorks, если вам это известно). Мне повезло, что CEEFIT - это открытый исходный код, потому что мне пришлось расширить его, чтобы делать что-то особенное, например читать несколько таблиц в качестве входных данных (поведение по умолчанию - чтение одной таблицы для тестового класса). Проработав с CEEFIT не менее года, я относительно уверен, что могу запускать интегрированные тесты на большинстве систем с помощью этого инструмента.

Бесстыдный плагин - некоторые из моих сообщений в блоге рассказывают о моем опыте использования CEEFIT с загрузками Я лично использовал CEEFIT для запуска интегрированных тестов на устаревших базах кода C ++, которые взаимодействуют с API платформы автоматизированного проектирования (SolidWorks, если вам это известно). Мне повезло, что CEEFIT - это открытый исходный код, потому что мне пришлось расширить его, чтобы делать что-то особенное, например, читать несколько таблиц в качестве входных данных (поведение по умолчанию - чтение одной таблицы для тестового класса). Проработав с CEEFIT не менее года, я относительно уверен, что могу запускать интегрированные тесты на большинстве систем с помощью этого инструмента.

Бесстыдный плагин - некоторые из моих сообщений в блоге рассказывают о моем опыте использования CEEFIT с загрузками Я лично использовал CEEFIT для запуска интегрированных тестов на устаревших базах кода C ++, которые взаимодействуют с API платформы автоматизированного проектирования (SolidWorks, если вам это известно). Мне повезло, что CEEFIT - это открытый исходный код, потому что мне пришлось расширить его, чтобы делать что-то особенное, например читать несколько таблиц в качестве входных (поведение по умолчанию - чтение одной таблицы для тестового класса). Проработав с CEEFIT не менее года, я относительно уверен, что могу запускать интегрированные тесты на большинстве систем с помощью этого инструмента.

Бесстыдный плагин - некоторые из моих сообщений в блоге рассказывают о моем опыте использования CEEFIT с загрузками например, чтение нескольких таблиц в качестве входных данных (поведение по умолчанию - чтение одной таблицы для тестового класса). Проработав с CEEFIT не менее года, я относительно уверен, что могу запускать интегрированные тесты на большинстве систем с помощью этого инструмента.

Бесстыдный плагин - некоторые из моих сообщений в блоге рассказывают о моем опыте использования CEEFIT с загрузками например, чтение нескольких таблиц в качестве входных данных (поведение по умолчанию - чтение одной таблицы для тестового класса). Проработав с CEEFIT не менее года, я относительно уверен, что могу запускать интегрированные тесты на большинстве систем с помощью этого инструмента.

Бесстыдный плагин - некоторые из моих сообщений в блоге рассказывают о моем опыте использования CEEFIT с загрузками http://ossandcad.blogspot.com/2009/07/swx-batch-mode-integrated-tests-with.html http://ossandcad.blogspot.com/2009/02/writing-ceefit -class-like-regular-c.html

В отношении CEEFIT есть несколько предостережений - предоставление ввода в табличном формате не всегда возможно (это не ошибка CEEFIT, это связано с дизайном FIT, который CEEFIT просто реализует). Исходный код не обновлялся в течение многих лет, если память не изменяет (поскольку сайт не работает), с 2005 года (но, поскольку его исходный код открыт, это не доставляло мне много проблем в моей работе).

3
ответ дан 8 December 2019 в 03:27
поделиться

Поскольку вы работали с JUnit, вам было бы легко работать с CPPUnit

0
ответ дан 8 December 2019 в 03:27
поделиться
Другие вопросы по тегам:

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