Подтвердить что ты не робот

Результат CTest приводит к Jenkins (xUnit >= 1.58)

Кажется, что это должно быть легко интегрировать CMake + CTest в jenkins. Плагин cmakebuilder чрезвычайно прост в настройке (просто установите исходное дерево и дерево сборки!). Однако я не понимаю, как вызвать шаги CTest.

В соответствии с главной страницей xUnit, поскольку версия 1.58 поддерживается XML-выходом из CTest, см. отчет об ошибке.

Это обо всей документации, которую я мог найти. Когда я ищу в google или в stackoverflow, я могу найти только очень старую документацию, требующую ручных шагов.

Я хотел бы знать, как настроить последние jenkins (1.532.1) с помощью xUnit (1.81). Должен ли я создать "Добавить строительный этап"? Должен ли я создать "действие после сборки"? Что мне нужно заполнить, чтобы запустить CTest и создать надлежащие файлы XML, чтобы jenkins могли их интегрировать?

4b9b3361

Ответ 1

Вот небольшой пример, демонстрирующий, как xUnit собирает файл результатов теста XML, полученный CTest. Пример состоит из одного исходного файла С++ main.cpp

#include <cstdlib>
int main() {
    std::exit(-1);
}

и сопровождающий CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(JenkinsExample)
enable_testing()
add_executable(main main.cpp)
add_test(test1 main)
add_test(test2 main)
set_tests_properties(test2 PROPERTIES WILL_FAIL ON)

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

Используя Jenkins, настройте новое задание и добавьте новый шаг сборки cmakebuilder. Укажите исходный каталог CMake в папку, содержащую пример проекта на вашем локальном компьютере. Каталог сборки CMake должен быть установлен на build. Это заставит Дженкинса создать папку сборки CMake в каталоге рабочей области задания. Рекомендуется установить флаг Clean Build, чтобы заставить работу всегда начинаться с чистого состояния.

Затем, если вы используете Unix, добавьте шаг задания Execute shell и введите следующую оболочку script в поле Command:

cd build
/usr/local/bin/ctest --no-compress-output -T Test || /usr/bin/true

Запуск ctest с опцией -T Test заставит CTest генерировать выходной файл XML в подпапке Testing внутри папки сборки, которая может быть поднята плагином xUnit в сообщении -build. || /usr/bin/true необходимо, чтобы Jenkins не прерывал сборку преждевременно (без запуска подключаемого модуля xUnit), если некоторые тесты терпят неудачу.

Если вы используете Windows, настройте аналогичный шаг задания Execute Windows batch command:

cd build
"C:\Program Files (x86)\CMake 2.8\bin\ctest.exe" --no-compress-output -T Test || verify > NUL

Наконец, плагин xUnit должен быть сконфигурирован следующим образом:

Добавьте действие post-build Publish xUnit test result report, а затем используйте кнопку Add подключаемого модуля, чтобы создать отчет о результатах тестирования CTest-Version. В CTest-Version (default) Pattern введите шаблон файла build/Testing/**/Test.xml.