gpt4 book ai didi

c++ - Trac 不会解析谷歌测试 xml 输出文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:48 26 4
gpt4 key购买 nike

我已经运行了使用带有 --gtest_output="xml:test-results.xml"标志的 google test 1.6.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

另一个错误的可能性是在我被咬的脚本中。在 Trac 0.12.2 上运行。这是我使用 java:junit 解析器解析 XML 文件的秘诀:

<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 解析器有一个错误。它不喜欢 testsuites 标签,也不喜欢有多个 testsuite 部分。 PHP 允许 testsuites 标记,但不会做多个文件。我选择用 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 进行转换。您也可以将输出文件组合成单个输出(使用类似于 nose 的 XUnit 输出)并使用 php:phpunit 来解析文件。

关于c++ - Trac 不会解析谷歌测试 xml 输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com