googletest输出的XML测试报告格式是否为通用行业标准?
Googletest XML测试输出格式问题答复
相关背景
执行命令
$ GTEST_OUTPUT=xml:/path/to/ ctest --verbose $ cat /path/to/IntUtilsTest.xml
生成的XML内容
<?xml version="1.0" encoding="UTF-8"?> <testsuites tests="1" failures="0" disabled="0" errors="0" timestamp="2021-07-07T23:25:35" time="0.008" name="AllTests"> <testsuite name="gitflow_tester" tests="1" failures="0" disabled="0" errors="0" time="0.002"> <testcase name="zero_plus_five_equals_5" status="run" time="0.001" classname="gitflow_tester" /> </testsuite> </testsuites>
问题解答
1. googletest输出的XML格式是否符合通用标准?
不符合严格的通用标准,不存在所有测试套件共同遵循的XML测试结果规范。
目前行业内常见的测试框架XML输出都属于JUnit风格变体:JUnit本身没有官方统一的XML Schema定义,各个测试框架都是在<testsuites>/<testsuite>/<testcase>的基础结构上做自定义扩展。
你遇到的14条校验报错均是因为googletest的自定义扩展不符合第三方XSD要求导致:googletest在基础结构上新增了大量独有扩展属性,比如<testsuites>节点的tests、failures、timestamp等统计属性,<testsuite>节点的disabled属性,<testcase>节点的status属性,这些都不属于通用JUnit XSD的约定范围,因此会触发校验不通过,属于正常现象。
2. 切换为cxxtest、cpptest等其他框架是否无需修改解析逻辑?
大概率需要修改解析逻辑,无法直接复用。
不同C++测试框架的JUnit风格XML输出差异极大:比如cxxtest不会输出disabled属性,<testsuite>节点的必填字段和googletest完全不同,cpptest的测试用例执行状态会存放在子节点而非属性中,字段名、节点层级、属性定义都没有统一约定,不存在跨框架通用的解析逻辑。
内容的提问来源于stack exchange,提问作者StoneThrow
相关产品推荐
相关产品推荐

