C++ 将Jenkins与boost.test单元测试结合使用

C++ 将Jenkins与boost.test单元测试结合使用,c++,jenkins,boost-test,C++,Jenkins,Boost Test,我在这方面做了一些谷歌搜索,发现了许多关于让Jenkins理解boost.test的XML输出格式的讨论,但没有规范参考 有些人说我们只需要使用XLST来转换XML格式,其他人则认为XML在转换之前需要进行一些修改()。一些人建议插件本机理解boost.test XML格式,其他人则建议插件本机理解boost.test XML格式 因为我的搜索结果跨越了5年,我意识到事情可能已经改变了。因此,我正在寻找一个关于使用Jenkins运行和评估boost单元测试的最佳方法的最新答案。使用Jenkins

我在这方面做了一些谷歌搜索,发现了许多关于让Jenkins理解boost.test的XML输出格式的讨论,但没有规范参考

有些人说我们只需要使用XLST来转换XML格式,其他人则认为XML在转换之前需要进行一些修改()。一些人建议插件本机理解boost.test XML格式,其他人则建议插件本机理解boost.test XML格式


因为我的搜索结果跨越了5年,我意识到事情可能已经改变了。因此,我正在寻找一个关于使用Jenkins运行和评估boost单元测试的最佳方法的最新答案。

使用Jenkins 1.498、xUnit 1.52和boost 1.42,xUnit解析对我来说是有效的。我有一个使用boost 1.53的新项目,XML输出格式对我的“全人类”易出错的眼睛来说似乎是一样的,但由于我还没有在Jenkins中设置单元测试,我不能100%确定输出是否兼容

按照中的建议,我正在使用以下工具运行Boost测试程序:

run_test --log_format=XML --log_sink=results.xml --log_level=all --report_level=no
我将构建后的xUnit步骤配置为使用BoostTest-1.x格式解析
results.xml

如果您仍然有问题,也许您可以更新您的问题,提供关于您的版本以及如何生成测试输出的更多详细信息

run_test --log_format=XML --log_sink=results.xml --log_level=all --report_level=no --result_code=no
我在Dave Bacher的答案中添加了一个参数,因为显然Boost测试使用了非零退出代码来表示测试失败,但Jenkins将其解释为更基本的失败,因此停止测试而不处理测试结果

exit 201
Build step 'Execute Windows batch command' marked build as failure`

好的,通常它与这个选项一起工作。但是,如果您在大型项目中使用它,并且XML文件变得太大,那么XUnit插件将不再工作。
因此,我必须更改日志级别以测试套件。只记录错误,不记录成功的检查。

正如我所说,最新是关键。。。请不要自动点击2年前问题的“复制按钮”,除非您确定这仍然是当前信息。您是否尝试过xUnit插件是否可以解析它?您是否尝试过使用链接问题中的XSLT?如果某种旧方法仍然有效,这将不会是新闻,但这并不意味着它是最好的方法。如果模块能够解析它,它将是最好的方法。如果不能,但是XSLT可以工作,那么这些答案仍然是最新的,编写另一个答案也没有多大意义,所以它无法解析它。我能找到的每个XSL文件都与其他文件不同,而且都不起作用。。。要么它们无法处理boost.test输入,要么它们的输出不被xunit.Brilliant理解——这完全取决于传递给test.EXE的参数。工作起来很漂亮。您还应该添加
--result\u code=no
。看@Antony的答案这不再是一个好答案,在我刚测试时已经不起作用了。只需使用现在支持的
--log\u format=JUNIT
。您应该对Dave Bacher的答案发表评论,而不是创建新的答案。如果我有相关的评论权限,这也是我的首选。