CMake CTest输出到JUnit XML

5
有没有办法使用CTest以junit xml格式报告结果?我发现了--output-junit命令行开关,但运行ctest --output-junit testRes.xml并不会创建输出文件...
2个回答

8

我遇到了与 ctest version 3.25.1 相同的问题。我正在调查中。如果我找到解决方案,我会在这里发布。 - Kevin
2
我已经理解/解决了这个问题。运行 ctest --output-junit build/ctest-results.xml --test-dir build 将会创建一个文件 ./build/build/ctest-results.xml,也就是说,使用选项 --output-junit 指定的输出文件是相对于使用 --test-dir 指定的目录而言的,而不是相对于当前目录。 - Kevin
好像你是对的。而且 ctest 非常贴心地不会给出任何 未知参数 错误 - 它只是忽略未知的参数。这就是那种糟糕的工程,浪费了人们(比如我)数小时的生命。 :-/ - Timmmm

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}
)

并获得一个JUnit报告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接