【问题标题】:sax parser exception while generating allure results生成诱惑结果时出现 sax 解析器异常
【发布时间】:2018-05-09 20:31:10
【问题描述】:

我正在使用 Allure 框架来生成测试报告。 在测试框架中用作 maven 依赖项。

在 jenkins 中运行测试时,Allure 按预期创建了报告,但是控制台中很少有由 allure 生成的 xml 文件的异常。 Allure 正在从测试信息创建 xml 文件,但是它从 html/JSON 格式的 rest API 响应生成 xml 文件,并且由于它不是有效的 xml 文件,因此引发了 Sax Parser 异常。

我无法理解如何解决这些异常。

下面是异常的sn-p [致命错误] da669b14-4d30-4260-8815-eab1f720661b-attachment.xml:1:1:prolog 中不允许内容。 无法解析文件 /home/jenkins/workspace/xxx_trunk-H4U6TKVVIR44VYBZR7Q53HWUDRP5C3JJEEVZOEYQTCQK53LROIJA/.ci-reports/allure-results/da669b14-4d30-4260-8815-eab1f720661b-attachment.xml:{} org.xml.sax.SAXParseException; systemId:文件:/home/jenkins/workspace/amp-adengine_trunk-H4U6TKVVIR44VYBZR7Q53HWUDRP5C3JJEEVZOEYQTCQK53LROIJA/.ci-reports/allure-results/da669b14-4d30-4260-8815-eab1f720661b-attachment.xml;行号:1;列号:1;序言中不能有内容。 在 com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257) 在 com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339) 在 javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205) 在 io.qameta.allure.junitxml.JunitXmlPlugin.parseRootElement(JunitXmlPlugin.java:97) 在 io.qameta.allure.junitxml.JunitXmlPlugin.lambda$readResults$0(JunitXmlPlugin.java:87) 在 java.util.ArrayList.forEach(ArrayList.java:1249) 在 io.qameta.allure.junitxml.JunitXmlPlugin.readResults(JunitXmlPlugin.java:87) 在 io.qameta.allure.ReportGenerator.lambda$readResults$0(ReportGenerator.java:32) 在 java.util.ArrayList.forEach(ArrayList.java:1249) 在 io.qameta.allure.ReportGenerator.readResults(ReportGenerator.java:32) 在 java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) 在 java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) 在 java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) 在 java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) 在 java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) 在 java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) 在 java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在 java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) 在 io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:54) 在 io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:43) 在 io.qameta.allure.Commands.generate(Commands.java:89) 在 io.qameta.allure.CommandLine.run(CommandLine.java:129) 在 java.util.Optional.orElseGet(Optional.java:267) 在 io.qameta.allure.CommandLine.main(CommandLine.java:72)

来自 API 的响应将始终是 HTML/JSON,并且永远不会是 xml 响应。 有人可以指导我解决这些异常吗?

【问题讨论】:

    标签: rest testing saxparser allure


    【解决方案1】:

    答案真的取决于你如何使用 Allure 来保存附件。一般来说,保存附件时可以指定MIME类型和文件扩展名

    @Attachment(value = "API response", type = "application/json", fileExtension = ".json")
    public String requestAPI() {
        ...
        return response;
    }
    

    【讨论】:

    • 感谢您的建议,帮助我找到了正确的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2011-08-15
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多