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

标签 jenkins cmake ctest

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

根据主要xUnit page,自1.58版以来,支持CTest的XML输出,请参见bug report

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

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

最佳答案

这是一个小示例,演示了如何让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在build文件夹内的子文件夹Testing中生成一个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

关于jenkins - 在Jenkins中产生CTest结果(xUnit> = 1.58),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21633716/

相关文章:

cmake - 让 CMake 设置 CTtest 以在单个测试的输出周围打印页眉和页脚

cmake - 如何编写功能测试脚本在cmake/ctest下运行

java - Sonarqube:缺少以下文件的 blame 信息

jenkins - Jenkins 上的 JUnit 结果超过 1 个图表

c++ - 使用CPPCHECK的Red Hat Enterprise Linux(RHEL)上的C++宏问题

cmake - 如何在 install() 中运行 cmake 宏?

jenkins - Jenkinsfile 中的构建失败

opencv - 如何在 Windows 上使用 GStreamer 构建 openCV 3.3.0

c++ - CMake 生成的 Xcode 项目不显示头文件

linux - CMake 使用库预加载每个测试