Гудзон, C++ и UnitTest ++

22
задан Rasmus Faber 13 January 2011 в 09:05
поделиться

6 ответов

Мы активно делаем это на моем рабочем месте.

В настоящее время, мы используем вольный проект программного обеспечения для:

  • Проверка наш репозиторий Подрывной деятельности для обновлений каждые 15 минут
  • Вызов пакетный файл окон, чтобы убрать и создать сборку файлов Проекта файла
    • решения и выполнить модульные тесты как Модульный тест события
    • постсборки отказы возвращает тест main(), таким образом рассматривают как ошибки сборки

, я также протестировал конфигурацию, которая использует XmlTestReporter, включенный с UnitTest ++ для генерации выходных файлов. xUnit плагин исходно поддержки этот вывод, наряду с любым другим выводом, который можно преобразовать, хотя я должен был изменить файл XSL, который шел с ним в версии 0.1.3 для записывания продолжительностей в тестовой истории.

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

12
ответ дан Patrick Johnmeyer 29 November 2019 в 05:29
поделиться

Задолго до того, как я начал использовать Гудзон, я работал над проектом C++, где мы использовали cpp-unit-lite и CruiseControl

, Мы изменили Cpp-unit-lite для генерации JUnit как файлы отчета о XML, и CruiseControl взял файлы отчета о XML.

можно сделать, то же для UnitTest ++ и Гудзон будет погрузка файлы отчета.

Однако, который походит на большую работу. Взгляните на плагин графика для Гудзона. Вы можете иметь извлечение сценария количество сбоя/передачи тестов от UnitTest ++ вывод и использовать плагин графика для рисования простого графика передачи/сбоя тестов на сборку.

Не столь хороший как встроенный отчет о модульном тесте, но что-то можно получить работу быстро.

2
ответ дан ewalshe 29 November 2019 в 05:29
поделиться

Мы использовали аналогичный подход в моем офисе, кроме использования cxxtest вместо UnitTest ++, и теперь мы находимся в процессе к миграции на Google, значительно выше (по моему скромному мнению), gtest платформа.

С cxxtest, мы сделали что-то подобное тому, что предложенный Patrick J., который должен был в основном добавить шаг сборки, который запустит программу набора тестов через муравья и заставит сборку перестать работать, если какие-либо тесты перестанут работать. Недостаток этого подхода - когда сборка перестала работать из-за результата испытаний, тогда необходимо отправиться на охоту через консольный вывод для выяснения то, что пошло не так, как надо. Также Вы освобождаете изящные диаграммы, которые может генерировать Гудзон, если Ваша среда тестирования может произвести junit-совместимый XML.

Один из мотивирующих факторов для переключения на gtest - то, что он действительно генерирует junit XML, таким образом, в теории, Гудзон может проанализировать результаты испытаний и опубликовать их более разумным способом. Так или иначе не похоже, что UnitTest ++ генерирует что-либо как это (исправьте меня, если я буду неправ), таким образом, это мог бы быть спорный вопрос, но по крайней мере интеграция, то это в Ваш процесс сборки удостоверится, что тесты запущены во время сборок.

1
ответ дан Nik Reiman 29 November 2019 в 05:29
поделиться

Я использую Гудзон с выводом xml и CppUnit. xml переводятся xslt в вывод JUnit как. Сайт CppUnit обеспечивает xslt, которые преобразовывают вывод CppUnit в вывод JUnit. Я взломал его немного для получения деталей mre как:

  • пространства имен как пакеты
  • время выполнения

можно преобразовать вывод xml для получения следующего:

<?xml version="1.0" encoding="UTF-8"?>
<testsuite>
   <testcase name="my test name"
             classname="Package1.Package2.TestClass"
             time="0.25">
      <error type="error"/>
   </testcase>
   ....
</testsuite>

В случае успеха: просто удалите тег sub

С уважением

2
ответ дан 29 November 2019 в 05:29
поделиться

Теперь у Хадсона есть плагин CppUnit , который может помочь.

4
ответ дан 29 November 2019 в 05:29
поделиться

I checked the xUnit plugin, as Patrick Johnmeyer suggested in the accepted answer. For completeness sakes, here is the driver code:

#include <fstream>
#include "UnitTest++.h"
#include "XmlTestReporter.h"

int main( int argc, char *argc[] ) {
    std::ofstream f("file.xml");
    UnitTest::XmlTestReporter reporter(f);
    return UnitTest::RunAllTests(reporter, UnitTest::Test::GetTestList(), NULL, 0);
}

In Hudson configuration, check "Publish testing tools result report" and point it to "file.xml"

5
ответ дан 29 November 2019 в 05:29
поделиться
Другие вопросы по тегам:

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