我在 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 处理器要求跳过的测试包含
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