一尘不染

在Jenkins中产生CTest结果(xUnit> = 1.58)

jenkins

似乎将CMake + CTest集成到jenkins中应该很容易。该cmakebuilder插件是非常容易配置(刚才设置的源树和构建树,完成了!)。但是我不明白如何调用CTest步骤。

根据xUnit主页,自1.58版以来,支持CTest的XML输出,请参见bug报告

那就是我能找到的所有文档。当我在google或stackoverflow上搜索时,我只能找到非常老的文档,需要手动操作。

我想知道如何使用xUnit(1.81)设置最新的詹金斯(1.532.1)。我应该创建一个“添加构建步骤”吗?我应该创建一个“构建后动作”吗?我需要填写什么才能使CTest运行并生成适当的XML文件,以便jenkins可以集成它们?


阅读 325

收藏
2020-07-25

共1个答案

一尘不染

这是一个小示例,演示了如何让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作业步骤并在Command框中输入以下shell脚本:

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

运行ctest该选项-T Test将使CTest
Testing在build文件夹内的子文件夹中生成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

2020-07-25