jenkins - 在 Jenkins 中使用 gtest

标签 jenkins googletest

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

Screenshot

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

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

关于jenkins - 在 Jenkins 中使用 gtest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11540633/

相关文章:

c++ - 如何使用 resharper 在 QNX 虚拟机中运行 Google 测试(C++ 单元测试)?

Jenkins 阻止在规定的时间范围内建立特定的工作

jenkins - 通过 url 传递选择参数以远程构建参数化作业

Jenkins 通过 Groovy 脚本通过远程处理禁用 CLI

c++ - 在EXPECT_EQ中使用GTest/GMock Matcher

c++ - Google 测试中的 BOOST_CHECK_EQUAL_COLLECTIONS

linux - QApplication 之后的清理

googletest - Googlemock - WillOnce 中的多个操作导致构建错误

AWS EKS kubernetes 集群中的守护进程不支持 docker buildkit

python - PyCharm Idea 中的 Jenkinsfile 语法高亮显示