首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Trac不会解析google测试xml输出文件

Trac不会解析google测试xml输出文件
EN

Stack Overflow用户
提问于 2012-10-24 06:27:58
回答 1查看 1.2K关注 0票数 1

我已经使用--gtest_output=“xml: test - result ts.xml”标志运行了使用google test 1.6.0框架编写的单元测试,并获得了如下测试结果文件:

代码语言:javascript
代码运行次数:0
运行
复制
<?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解析器兼容。相关帖子:Unable to get hudson to parse JUnit test output XML

错误的另一个可能性是在我的bitten脚本中。在Trac 0.12.2上运行。下面是我使用java:junit解析器解析XML文件的方法:

代码语言:javascript
代码运行次数:0
运行
复制
<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错误

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-25 02:40:19

我能够解决这个问题。结果发现Trac的JUnit解析器有一个bug。它不喜欢testsuites标签,也不喜欢有多个testsuite部分。PHP允许testsuites标记,但不会处理多个文件。我选择用Python创建一个解析器,它从Gtest输出文件创建多个XML文件。

代码语言:javascript
代码运行次数:0
运行
复制
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进行转换。此外,您还可以将输出文件组合到单个输出中(使用类似于nose的XUnit输出),并使用php:phpunit解析该文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13040313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档