使用Jenkins进行boost.test单元测试

21

我在这个领域进行了一些谷歌搜索,发现了许多关于如何让 Jenkins 理解 boost.test 的 XML 输出格式的讨论,但没有一个官方参考。

有人说我们只需要使用 XLST 转换 XML 格式,其他人建议在此之前需要对 XML 进行一些修改(Anyone have an XSL to convert Boost.Test XML logs to a presentable format?)。有人建议使用 xUnit 插件可以本地理解 boost.test XML 格式,而其他人则表示不能

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


1
正如我所说,保持最新是关键... 请不要自动点击“重复按钮”以针对两年前的问题,除非您确定那仍然是当前信息。 - Mr. Boy
你有尝试过使用xUnit插件来解析吗?你有尝试使用链接问题中的xslts吗? - Jan Hudec
如果一些旧方法仍然有效,那就不会是新闻,这并不意味着它是最好的方法。 - Mr. Boy
如果模块可以解析它,那么这是最好的方法。如果不能但 XSLT 可以工作,那么这些答案仍然是最新的,写另一个答案也没有太大意义。 - Jan Hudec
所以 - 它无法解析它。我能找到的每个XSL文件都与其他文件不同,而且没有一个有效... 要么它们无法处理boost.test输入,要么它们的输出无法被xunit理解。 - Mr. Boy
使用Boost.Test本地JUnit输出,通过命令行选项--logger进行文件输出。 - Raffi
3个回答

26

使用Jenkins 1.498、xUnit 1.52和boost 1.42可以对xUnit进行解析。我正在使用boost 1.53创建一个新项目,XML输出格式在我这个容易出错的人类眼中似乎是相同的,但由于我尚未在Jenkins中设置单元测试,因此我不能百分之百确定输出是否兼容。

xUnit插件评论中建议的那样,我正在使用以下命令运行Boost测试程序:

run_test --log_format=XML --log_sink=results.xml --log_level=all --report_level=no

我已经配置了我的构建之后的xUnit步骤,以使用BoostTest-1.x格式解析results.xml

如果您仍然遇到问题,也许您可以更新您的问题并提供关于您的版本和测试输出如何生成的更多细节。


太棒了 - 这全都归功于传递给测试.EXE的参数。运行得非常好。 - Mr. Boy
你还应该添加 --result_code=no。参见 @Antony 的回答。 - Michael Konečný
1
这不再是一个好的答案,当我刚测试时已经不起作用了。现在只需使用支持的 --log_format=JUNIT 即可。 - Freitags

3
run_test --log_format=XML --log_sink=results.xml --log_level=all --report_level=no --result_code=no

我在Dave Bacher的答案中添加了一个参数,因为显然Boost Test使用非零退出代码来指示测试失败,但Jenkins将其解释为更根本的失败,因此停止处理测试结果。

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

你应该在Dave Bacher的回答下发表评论,而不是创建一个新的回答。 - Jarosław Kończak
3
如果我拥有相关的评论权限,那也是我的首选。 - Antony

0

好的,通常情况下这些选项都可以正常工作。但是如果您在大型项目中使用它,并且XML文件变得太大,那么XUnit插件将不再起作用。 因此,我不得不将log_level更改为test_suite。只有错误会被记录,成功的检查不会被记录。


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