Ответ 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
.