这是一个小示例,演示如何让 xUnit 获取 CTest 生成的 XML 测试结果文件。该示例由单个 C++ 源文件组成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
. 这将使 Jenkins 在作业的工作区目录中创建一个 CMake 构建文件夹。Clean Build
设置标志以使作业始终以干净状态开始是个好主意。
然后,假设您正在运行 Unix,添加一个Execute shell
作业步骤并在框中输入以下 shell 脚本Command
:
cd build
/usr/local/bin/ctest --no-compress-output -T Test || /usr/bin/true
ctest
使用该选项运行-T Test
将使 CTestTesting
在构建文件夹内的子文件夹中生成一个 XML 输出文件,然后xUnit
插件可以在构建后操作中获取该文件。如果某些测试失败,|| /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
必须按以下方式配置插件:
添加Publish xUnit test result report
构建后操作,然后使用插件的Add
按钮创建CTest-Version
测试结果报告。在CTest-Version (default) Pattern
输入文件模式build/Testing/**/Test.xml
。