如何在Hudson / Jenkins中获得CTest结果
题
我正在使用CTest(CMake的一部分)进行自动化测试。
如何在Jenkins仪表板中获得CTest结果?或者,换句话说,如何使CTest以类似JUnit的XML输出?
解决方案
在Jenkins中,在CMake部分(可能是通过CMake插件完成)之后,添加以下批处理脚本,或适应Linux上的构建: 通用标签
-
build_32
是CMake插件中的构建目录 -
Tests
是我所有测试所在的子目录 -
-T Test
使CTest输出为XML(?!) -
verify >nul
将错误级别重置为0,因为如果任何测试失败,CTest会返回> 0,Jenkins将其解释为“整个构建失败”,这是我们不希望的 - 最后一行将CTest的XML转换为 minimum JUnit xml。 Python脚本和xslt位于源目录中,您可能需要更改它。
python脚本看起来像这样(在10分钟内被黑,请当心): 通用标签
- 它需要lxml,直接链接
- 它有两个参数,测试所在的目录(在build目录中)和一个xsl文件
- 它只是读取最后的xml测试结果,并使用xsl对其进行转换,然后将其输出到stdout
-
Testing/TAG
文件的第一行中存在“最后的xml测试”,因此需要附加的fopenxsl看起来像这样。它虽然很小,但却可以完成工作:[编辑]参见MOnsDaR的改进版本: http://pastebin.com/3mQ2ZQfa < / a> 通用标签
最后,选中“发布JUnit测试结果”(或类似版本,我的版本为法文)并将xml路径设置为
build_32/JUnitTestResults.xml
嗯,这很丑。但是,仍然希望这对某人有帮助。并欢迎进行改进(也许从python运行ctest?使用Python插件的路径而不是C:...?)
不隶属于 StackOverflow