【问题标题】:JAXB code runs fine everywhere except under Maven / Cobertura除了在 Maven / Cobertura 下,JAXB 代码在任何地方都可以正常运行
【发布时间】:2014-03-24 16:35:22
【问题描述】:

我有一段非常标准的 JAXB 代码

  StringReader is = new StringReader(rspString);
    Unmarshaller ums = Util.createUnMarshaller(cL, Schemas.RECEIPT_SCHEMA, GetReceiptCallResponse.class);
    UnmarshallerHandler umsHandler = ums.getUnmarshallerHandler();
    XMLFilter filter = Util.createSaxNamespaceFilter();
    filter.setContentHandler(umsHandler);

    InputSource xml = new InputSource(is);

    filter.parse(xml);

它在生产中运行良好,并且作为单元测试的一部分。但是,当它由 Maven/Cobertura 插件运行时,它会失败。奇怪的是,当它由 maven surefire 插件运行时,代码运行良好(没有覆盖率测量)。此外,无论是作为单元测试运行还是在 IntelliJ 覆盖工具下运行,它都能在 IntelliJ IDE 中正常运行。似乎唯一的区别是 cobertura 工具本身。

我检查了输入时的架构和 XML 文件,一切正常。无论有无 cobertura 运行,代码都会得到完全相同的输入。

我得到的具体错误是:

testFailingParseWithCobertura(org.vlad.taxestime.ReceiptImporterTest)  Time elapsed: 10.33 sec  <<< ERROR!
org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'count' is not allowed to appear in element 'Receipts'.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:458)

【问题讨论】:

  • 我从来没有在 Cobertura 的任何不平凡的事情上取得过很大的成功。如果您不关心覆盖工具,请尝试 JaCoCo。
  • 您的异常与架构验证有关。属性count 不允许出现在元素Receipts 中是否存在异常?如果是这样,其他环境可能应该抛出异常但没有
  • @BlaiseDoughan,不,只有在 cobertura 工具下运行代码时才会发生异常。当单元测试在没有覆盖的情况下运行时,它永远不会发生,它在生产和 IntelliJ IDE 中也能正常工作。事实上,在 IntelliJ 中,无论有无覆盖工具,它都可以运行。

标签: java maven jaxb cobertura maven-cobertura-plugin


【解决方案1】:

升级到 Maven cobertura 插件 2.7 和 Junit 4.11 后问题消失了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-19
    • 2015-05-24
    • 1970-01-01
    相关资源
    最近更新 更多