在jenkins中使用gtest

ven*_*s.w 24 googletest jenkins

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

截图

但它最终会在建筑物后出现错误.

未找到任何测试报告文件.配置错误?
构建步骤'发布JUnit测试结果报告'将构建结果更改为FAILURE
完成:FAILURE

Mat*_*asF 19

Fraser的答案很好,您需要一些额外的处理来将gtest XML转换为正确的JTest格式.

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

mygtestapp --gtest_output=xml:gtestresults.xml
Run Code Online (Sandbox Code Playgroud)

然后在脚本中,您需要添加额外的元素以正确标记跳过的测试.Jenkin的JTest处理器要求跳过的测试包含<skipped>元素,而不仅仅是将状态设置为"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
Run Code Online (Sandbox Code Playgroud)

如果在Windows批处理文件上运行此命令,请将awk操作放在文件中以避免引号出现问题.awk.progfile:

{ if ($1 == "<testcase" && match($0, "notrun")) print substr($0,0,length($0)-2) "><skipped/></testcase>"; else print $0;}
Run Code Online (Sandbox Code Playgroud)

并在您的bat文件中创建添加:

awk -f awk.progfile gtestresults.xml > gtestresults-skipped.xml
Run Code Online (Sandbox Code Playgroud)

最后,您将JTest处理器指向后构建步骤以读取转换后的XML:

# Publish JUnit Test Result Report
Test Report XMLs: gtestresults-skipped.xml
Run Code Online (Sandbox Code Playgroud)

  • 现在,还可以使用xUnit插件“ googletest 1.6”选项来解析googletest输出。似乎它可以处理没有`awk`魔术的禁用测试,并且也可以与googletest 1.7一起正常工作。 (2认同)

Fra*_*ser 8

您是否使用正确的标志(即--gtest_output=xml[:DIRECTORY_PATH\|:FILE_PATH])运行测试可执行文件?

--help输出:

--gtest_output=xml[:DIRECTORY_PATH\|:FILE_PATH] Generate an XML report in the given directory or with the given file name. FILE_PATH defaults to test_details.xml.