2009-04-06 2 views
1

Насколько эффективна среда тестирования CXX, учитывая, что вы пишете блок-тесты с кодом, который вы написали. Любая ошибка в коде может также быть переведена на ошибку в модульном тестовом коде? Разве это не то, что два негатива делают положительным?CXX Test Framework для C++

Кроме того, время и усилия, потраченные на CXX, по меньшей мере равны, если не больше, чем усилие кодирования.

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

С другой стороны, если вы считаете это полезным, пожалуйста, просветите меня :).

ответ

2

CXX не очень активен, и, как правило, при тестировании единицы измерения требуется много усилий. Но когда приходит первый рефакторинг, вы очень благодарны за потраченное усилие.

Я использовал Boost.Test & CPPUNIT. Я бы предпочел немного Boost.Test, но да, вы должны писать свои собственные проекты, файлы и т. Д.

Если вы знаете инструмент для создания вашего скелета из своего кода, я все уши. :)

Я предлагаю вам попробовать Boost.Test и CPPUNIT. Если вы считаете, что лучше, это даст вам хорошие раунды, чтобы противостоять CXXUNIT, поскольку вы предложите альтернативы.

+0

CxxTest не должен быть активным. В отличие от CppUnit, он является полным и простым в использовании. Это только неловкость исходит из политики зависимостей no <*stream>. –

+1

Извините, что не согласен, но важно использовать поддерживаемое программное обеспечение. Что происходит, когда он становится несовместимым с вашим компилятором? Когда есть ошибка? Вы делаете это сами? –

+4

В других случаях я, возможно, согласился. CxxTest не использует расширенные шаблоны C++, не требует RTTI и не требует исключений, а также большую часть стандартной библиотеки для совместимости с большинством старых компиляторов и будущих. И если я должен исправить инструмент, я буду, это очень простая структура. –

2

Я использую cxxtest. Регрессивное тестирование - дорогостоящая задача, которую мы используем только для проверки наших программных библиотек, которые предоставляют платформенный независимый уровень для наших приложений. Это делается для того, чтобы все изменения не повлияли на стабильность кода, поскольку так много приложений и проектов и зависят от них.

Мы используем cxxtest с анализом покрытия для обеспечения достаточного охвата тестирования, а также с помощью CruiseControl для его автоматизации.

Но мы не делаем это для приложений. Слишком много усилий.

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

Я думаю, Джоэл есть что сказать об этом тоже: http://www.joelonsoftware.com/items/2009/01/31.html

+0

«Мы сравниваем с анализом покрытия, чтобы обеспечить достаточный охват тестирования, а также с помощью CruiseControl для автоматизации». Как ты это сделал? Каков инструмент покрытия? –

+0

Мы используем VectorCAST. Он позволяет использовать исходный код перед его передачей компилятору. – sep

4

Google предлагает фантастические рамки C++ тестирования, я использовал ... Я никогда не использовал какие-либо рамки тестирования другого C++, и имел ограниченного опыта с Junit, и я смог забрать это очень быстро, так как документация хорошая. Важно использовать хорошие рамки тестирования, потому что тестирование слишком важно, чтобы отказаться от него из-за разочарования в рамках. Вот ссылка:

http://code.google.com/p/googletest/

Надеется, что это помогает!

0

Я предпочитаю только тестовые рамки только для заголовка, вот два из них: TUT и Catch. Раньше я использовал TUT в нескольких проектах и ​​недавно нашел Catch.

1) TUT - Шаблон C++ Framework Test Unit

TUT является небольшой и портативный блок испытания рамки для C++.

  • TUT не очень компактен, независимо от того, какой компилятор или ОС вы используете.
  • TUT состоит только из файлов заголовков. Никаких библиотек не требуется, развертывание никогда не было проще.
  • Пользовательский интерфейс репортера позволяет интегрировать TUT практически с любой IDE или инструментом в мире.
  • Поддержка многопроцессорного тестирования (в настоящее время проводятся испытания взаимоблокировок и тайм-аутов).
  • TUT является бесплатным и распространяется под лицензией BSD.
  • Испытания организованы в названные тестовые группы.
  • Регрессия (все тесты в приложении), одногрупповое или одно-тестовое исполнение.
  • Pure C++, нет макросов!

2) Catch - современный, C++ - родной, заголовок только, рамки для юнит-тестов, TDD и BDD

Что подвох?

Catch - это автоматические тестовые примеры C++ в заголовках и представляет собой автоматическую тестовую среду для мультипарадигмы для C++ и Objective-C (и, , возможно, C). Он полностью реализован в наборе файлов заголовков, но упакован как один заголовок для дополнительного удобства.