我在Jenkins中使用google测试成功运行了我的单元测试,但我不知道如何显示gtest生成的.xml文件。据说gtest满足JUnit格式,所以我设置如下:
但建筑物结束后会出现错误。
未找到任何测试报告文件。配置错误?
构建步骤'发布JUnit测试结果报告'将构建结果更改为FAILURE
完成:失败
答案 0 :(得分:18)
Fraser的答案很好,您需要一些额外的处理才能将gtest XML转换为正确的JTest格式。
首先,您要求gtest使用以下结果将结果输出到XML:
mygtestapp --gtest_output=xml:gtestresults.xml
然后在脚本中,您需要添加额外的元素以正确标记跳过的测试。 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
如果在Windows批处理文件上运行此命令,请将awk操作放在文件中以避免引号出现问题。 awk.progfile:
{ if ($1 == "<testcase" && match($0, "notrun")) print substr($0,0,length($0)-2) "><skipped/></testcase>"; else print $0;}
在你的bat文件中创建add:
awk -f awk.progfile gtestresults.xml > gtestresults-skipped.xml
最后,您将JTest处理器指向后构建步骤以读取转换后的XML:
# Publish JUnit Test Result Report
Test Report XMLs: gtestresults-skipped.xml
答案 1 :(得分: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.
答案 2 :(得分:1)
您的结果文件未存储在正确的位置,Jenkins插件无法找到它。执行测试并生成XML文件后,是否将其存储在任何位置?
我建议尝试使用'*'替换result.xml使其工作(假设这是唯一应该存储在那里的XML文件),如果这样做,那么就开始处理正确的文件名。
我们在配置中遇到了同样的问题。确保生成的结果XML存储在插件期望的位置,这是关键。您可以从项目配置中确定工作区根目录。
答案 3 :(得分:0)
这是一个Windows批量版本,用于转换google-test&#34; notRun&#34;到junit&#34;跳过&#34;通过Windows批处理。我知道有更优雅的方式,但这只需要Windows批处理并完成工作
rem convert gtest xml to junit compatible format (replace notRun by skipped)
IF EXIST %INTEXTFILE% (
IF EXIST %OUTTEXTFILE% (
del %OUTTEXTFILE%
waitfor fileSystemToDoItsStuff /t 1
)
FOR /f "tokens=1,* delims=¶" %%A IN ( '"type %INTEXTFILE%"') DO (
ECHO."%%A" | findstr /C:"DISABLED_">nul & IF ERRORLEVEL 1 (
SET modified=%%A
) ELSE (
SET string=%%A
SET modified=!string:/^>=^>^<skipped /^>^</testcase^>!
)
ECHO !modified!>> %OUTTEXTFILE%
)
del %INTEXTFILE%
waitfor fileSystemToDoItsStuff /t 1
move %OUTTEXTFILE% %INTEXTFILE%
)
答案 4 :(得分:0)