代码之家  ›  专栏  ›  技术社区  ›  Igor Zevaka

我应该单元测试XML模式吗?

  •  5
  • Igor Zevaka  · 技术社区  · 14 年前

    我正处于为我的工作的企业应用程序编写XML模式的早期阶段。要验证的XML表示一个应用程序-类似于WinForms-表单、网格、菜单等,但没有布局。

    XSD的主要目的不是验证XML,而是将设计时可发现性添加到XML文件中,以便对可用的元素和属性进行智能感知。

    在编写模式时,我发现自己正在执行TDD元素并根据模式验证文档,更改文档或模式中的元素/属性以使验证无法确保正确地编写模式。

    这就引出了一个问题,我是否应该对模式进行单元测试,只需对其进行一些XML排列,并确保它的行为符合预期。

    这对我来说当然是有意义的,因为我的XSD fu非常糟糕,我想更确信XSD,实际上它本身就是一个规范,是正确的。

    3 回复  |  直到 13 年前
        1
  •  2
  •   Ian manuel aldana    13 年前

    通常,我发现很难测试XSD模式:

    • 对于XSD,域的建模通常是关键,通常我对XSD构造本身没有问题,但我分析域时出错。
    • 生成的模型不是基于XSD本身,也不是基于绑定配置(例如JAXB for Java)。所以最后你测试得太多了。
    • 这种依赖于很多东西的测试常常会中断,特别是在重构XSD时。

    为了提高XSD的质量,我更喜欢:

    • 对XSD进行早期审查(由同事或QA进行)。让实际的人查看它们(XSD和XML实例)发现了自动测试无法发现的缺陷。
    • 对生成的XML实例进行集成测试。这些集成测试可以自动化。
        2
  •  3
  •   Tahir Akhtar    14 年前

    我想没有理由不单元测试XML模式。 如果它是代码(它是代码),那么TDD将倾向于测试它。

    另一个问题是如何解决这个问题? 一个简单的方法是创建两组示例XML文件,一组包含根据设计无效的所有文件,另一组包含有效的文件。然后用XML解析器简单地解析每个组并断言结果。

    但实际的挑战将在于创建示例XML文件。尤其是当你同时在发展你的设计时。

        3
  •  2
  •   John Saunders    14 年前

    如果您不擅长XSD,那么我建议您使用TDD构建XSD。也就是说,创建一个失败的单元测试,包括验证您想要工作的一些XML,以及一个不允许它验证的XSD。然后,更新XSD以允许该XML进行验证。然后,重构测试和XSD,重复测试。