除了Maven / Cobertura之外,JAXB代码在任何地方都运行良好

时间:2014-03-24 16:35:22

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

我有一段非常标准的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)

1 个答案:

答案 0 :(得分:0)

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