Trac不会解析谷歌测试XML输出文件
Trac won't parse google test xml output files
我已经运行了使用Google Test 1.6.0框架编写的单元测试,并使用-Gtest_output =" XML:test-Results.xml"标志,并获得像测试结果文件一样这个:
<?xml version="1.0" encoding="UTF-8"?>
<testsuites tests="8" failures="0" disabled="0" errors="0" time="81.396" name="AllTests">
<testsuite name="TestSuite1" tests="8" failures="0" disabled="0" errors="0" time="81.396">
<testcase name="Test1" status="run" time="6.391" classname="Class1" />
<testcase name="Test2" status="run" time="6.1" classname="Class1" />
<testcase name="Test3" status="run" time="7.146" classname="Class1" />
<testcase name="Test4" status="run" time="16.164" classname="Class1" />
<testcase name="Test5" status="run" time="25.145" classname="Class1" />
<testcase name="Test6" status="run" time="6.099" classname="Class1" />
<testcase name="Test7" status="run" time="6.162" classname="Class1" />
<testcase name="Test8" status="run" time="8.187" classname="Class1" />
</testsuite>
</testsuites>
根据我在其他帖子中阅读的内容,GTEST XML输出应该与Junit Parsers兼容。相关文章:无法让Hudson解析Junit测试输出XML
错误的另一种可能性是在我的bitten脚本中。在TRAC 0.12.2上运行。这是我使用Java解析XML文件的咬伤食谱:Junit Parser:
<build xmlns:java="http://bitten.edgewall.org/tools/java">
<step id="parse_results" description="Gather Results" onerror="fail">
<java:junit file="/home/user/temp/test-results.xml" />
</step>
</build>
在TRAC中,它说该构建成功了,但是测试结果是空白的。0运行,0失败,0忽略,0错误
谢谢。
我能够解决问题。事实证明,Trac的Junit Parser有一个错误。它不喜欢测试套件标签,也不喜欢拥有多个测试套件。PHP允许测试标签,但不会执行多个文件。我选择在Python中创建一个解析器,该解析器从GTEST输出文件中创建多个XML文件。
def move_results(results, results_dir):
# Moves all results into a temp folder to be consumed by Bitten
# Files with multiple test suite sections, split into individual files
for files in results:
fin = open(files)
test_id = 0
split_line = files.split('/')
file_name = split_line[len(split_line)-1].split('.xml')
for line in fin:
if not 'testsuites' in line:
if '<testsuite ' in line:
output_file = results_dir + file_name[0] + '-' + str(test_id) + '.xml'
test_id = test_id + 1
fout = open(output_file, 'w')
fout.write('<?xml version="1.0" encoding="UTF-8"?>n')
fout.write(line)
elif '<testsuite\>' in line:
fout.write(line)
fout.close()
elif not '<?xml version="1.0" encoding="UTF-8"?>n' in line:
fout.write(line)
fin.close()
os.remove(files)
另外,您可以使用Bitten使用XSLT进行转换。另外,您可以将输出文件组合到单个输出中(具有鼻子的Xunit输出),然后使用php:phpunit
来解析文件。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- Cppcheck生成xml转储文件
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 数据成员SFINAE的C++17测试:gcc vs clang
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么二进制搜索在我的测试中不起作用
- 从父数组测试用例构造二叉树失败
- 试图对缓存进行跨步测试,但程序并没有结束
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为测试目标创建具有不同源文件夹的文件
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 如何在pugixml中获取节点的内部XML
- Trac不会解析谷歌测试XML输出文件
- 如何防止eclipsec/c++单元测试遇到导致runner挂起的XML解析错误
- 使用XSD对xml生成器进行单元测试
- 提升测试"文件名".测试报告.xml未找到
- 如何导入谷歌测试xml结果到VSTS