Skip to main content
 首页 » 编程设计

jenkins之在 Jenkins 中使用 gtest

2024年12月31日17wayfarer

我在 Jenkins 中使用 google test 成功运行了我的单元测试,但我不知道如何显示由 gtest 生成的 .xml 文件。据说gtest满足JUnit格式,所以我设置如下:



但它最终会在构建后出现错误。

No test report files were found. Configuration error?
Build step 'Publish JUnit test result report' changed build result to FAILURE
Finished: FAILURE

请您参考如下方法:

Fraser 的回答很好,您需要进行一些额外的处理才能将 gtest XML 转换为正确的 JTest 格式。

首先,您要求 gtest 使用以下命令将结果输出到 XML:

mygtestapp --gtest_output=xml:gtestresults.xml 

然后在脚本中,您需要添加额外的元素以正确标记跳过的测试。 Jenkin 的 JTest 处理器要求跳过的测试包含 元素,而不仅仅是将状态设置为“notrun”:
awk '{ if ($1 == "<testcase" && match($0, "notrun")) print substr($0,0,length($0)-2) "><skipped/></testcase>"; else print $0;}' gtestresults.xml > gtestresults-skipped.xml 
mv gtestresults.xml gtestresults.off 

如果在 Windows 批处理文件上运行它,请将 awk 操作放在文件中以避免引号出现问题。 awk.prog 文件:
{ if ($1 == "<testcase" && match($0, "notrun")) print substr($0,0,length($0)-2) "><skipped/></testcase>"; else print $0;} 

并在您的 bat 文件中创建添加:
awk -f awk.progfile gtestresults.xml > gtestresults-skipped.xml 

最后,您将 JTest 处理器作为 Post-Build 步骤来读取转换后的 XML:
# Publish JUnit Test Result Report 
Test Report XMLs: gtestresults-skipped.xml