代码之家  ›  专栏  ›  技术社区  ›  RAbraham

独立于物理XML文件的单元测试XML

  •  2
  • RAbraham  · 技术社区  · 16 年前

    我的问题是:

    在JUnit中,如何在不从实际存储在文件系统中的XML文件读取SUT的情况下为正在测试的系统(SUT)设置XML数据?

    背景 :

    我得到一个XML文件,其中包含创建发票的规则。我的工作是将这些规则从XML转换为Java对象。 如果我的XML文件中有一个如下所示的标记,指示在30天后,无法为交易开具发票

    <ExpirationDay>30</ExpirationDay> 
    

    这可以转换为Java类,比如ExpirationDateInvoicingRule

    我有一个invoiceconfiguration类,它应该接受XML文件并创建*invoiceRule对象。我正在考虑使用statx解析invoiceconfiguration中的XML文档。

    问题:

    我想要单元测试发票配置。但我不希望invoiceconfiguration从文件系统上的XML文件中进行物理读取。我希望单元测试独立于任何物理存储的XML文件。我想在内存中创建一个XML表示。但是statx解析器只接受filereader(或者我可以使用文件对象)。

    3 回复  |  直到 10 年前
        1
  •  0
  •   dty    16 年前

    重构代码以获取读卡器而不是打开文件。文件的打开可以单独进行(如果你想坚持在单元测试中不访问文件的规则,这在很大程度上是不稳定的——但是这没关系,因为它只是一行,你不能真正弄错它!)

        2
  •  0
  •   ng.    16 年前

    下面是一个使用xmlUnit和自定义框架处理XML的测试示例。框架使用STAX将XML映射到Java POJOS。

    https://simple.svn.sourceforge.net/svnroot/simple/trunk/download/stream/src/test/java/org/simpleframework/xml/core/

    没有外部依赖关系,测试覆盖率约为90%

    http://simple.sourceforge.net/download/stream/report/cobertura/

        3
  •  0
  •   RAbraham    16 年前

    谢谢你们的帮助。 另一个好消息来源是这个链接: http://marc.info/?l=xerces-j-dev&m=86952145010437&w=2

    这是baq haidri的答案

    -----原始邮件----- 发件人:baq haidri[mailto:bhaidri@….]

    我在Wrox出版社出版的一本名为“专业XML”的书中发现了这一点:

    >
    >public void parseString(String s) throws SAXException, IOException
    >{
    >         StringReader reader = new SringReader(s);
    >         InputSource source = new InputSource(reader);
    >         parser.parse(source);
    >}