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

Igo*_*aka 5 tdd xsd unit-testing

我正处于为我的工作的企业应用程序编写XML模式的最初阶段.要验证的XML代表一个应用程序 - 类似于Winforms - 表单,网格,菜单等但没有布局.

XSD的主要目的不是验证XML,而是为XML文件添加设计时可发现性,以便获得可用元素和属性的IntelliSense.

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

这让我想到了我是否应该对模式进行单元测试,只是在其中抛​​出一些XML的排列,并确保它的行为方式如此.

这对我来说肯定是有意义的,因为我的XSD-fu很糟糕,我想更加确定XSD,它实际上是一个规范本身,是正确的.

man*_*ana 3

一般来说,我发现测试 XSD 模式非常困难:

  • 对于 XSD 通常,域的建模是关键,通常我对 XSD 构造本身没有问题,但我对域的分析是错误的。
  • 生成的模型不是基于XSD 本身,而是基于绑定配置(例如JAXB for Java)。所以最终你测试太多了。
  • 此类依赖于很多事情的测试往往会经常中断,尤其是当您重构 XSD 时。

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

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