CMake CTest 输出到 JUnit XML

Hal*_*100 5 junit unit-testing cmake ctest

有没有办法使用 CTest 以 JUnit XML 格式报告结果?我找到了命令--output-junit行开关,但运行ctest --output-junit testRes.xml不会创建输出文件...

小智 8

ctest --output-junit testRes.xml 不创建输出文件...

这是相对较新的功能,您只需将 CMake / CTest 更新到 v.3.21.4 或更高版本(参考https://cmake.org/cmake/help/v3.21/manual/ctest.1.html

  • 我理解/解决了这个问题。运行 `ctest --output-junit build/ctest-results.xml --test-dir build` 将创建一个文件 `./build/build/ctest-results.xml`,即使用选项指定的输出文件`--output-junit` 是相对于 `--test-dir` 指定的目录,而不是相对于当前目录。 (3认同)

Nik*_*ita 0

同样的问题。我不深入研究它。但我想有一个方便的解决方法:要求 CMake 使用本机选项调用测试可执行文件,旨在自行生成 JUnit 报告。

这种方法可以让您获得尽可能详细的 JUnit 报告。此类报告将包含称为可执行文件的每个测试用例的单独日志记录,而不是一次完整的可执行文件。我的假设是,在一般情况下,CMake 无法在任何详细级别解析每个测试框架的标准输出来收集任何数据来生成漂亮的 JUnit 报告。

继续这个例子,假设我们正在处理基于Boost.Test. 然后通过以下方式将其添加到CMake项目中

add_test(
    NAME ${test_name}
    COMMAND ${boost_test_executable_file} --logger=JUNIT,message,${path_to_junit_log}
)
Run Code Online (Sandbox Code Playgroud)

并获取 JUnit 报告。