代码之家  ›  专栏  ›  技术社区  ›  Andrzej Doyle

模式(xsd)等价性的回归测试

  •  1
  • Andrzej Doyle  · 技术社区  · 16 年前

    我正在考虑重写一个包含大量独立复杂类型的模式,使复杂类型能够更合理地扩展其他基本类型。其基本原理部分是概念性的,因为其中大多数类型是具有明确层次结构的域对象的特定实例,部分是实用的,因为我们使用JAXB生成的类来处理XML读取逻辑,并且不可能在没有反射或大量数据的情况下为公共功能编写方法 instanceof 和铸造。呜呜。

    另外,如果这是个糟糕的主意(或者有更好的选择),那么现在就阻止我吧

    2 回复  |  直到 16 年前
        1
  •  2
  •   Andrzej Doyle    16 年前

    经过调查,我发现 Liquid XML Sample Generator 相当地

    SUT: XML Schema Unit Test

    因此,至少我有一个可行的后备方案——从旧模式生成一堆文档,然后根据新模式验证它们,反之亦然。它不是确定的(好吧,单元测试从来都不是),但是在每个方向上运行几百或几千个测试应该会让人非常确信模式是等效的。

    我仍然很高兴有一个优雅的测试解决方案出现,但在谷歌搜索了一个小时后,我并没有抱太大的希望,希望有类似的东西存在。

        2
  •  2
  •   xcut    16 年前

    这个问题没有一般的答案,因为两个上下文无关语法是否等价的问题是无法确定的。看见 this wikipedia page .

    可以 如果您对如何设计模式做出了某些假设(禁止匿名类型、命名约定等),则可以解决此问题。然后你可以使用像这样的库 eclipse XSD (在独立应用程序中,它在eclipse之外工作很好)来执行比较。

    最后,这里有一个例子 link to a research paper