4

寻找一种我们可以检查 XML 文件的方法,而不仅仅是模式验证。找到了一些对 Schematron 的引用,看起来很有趣,但很难看到我们如何将这一切拼凑起来:

问题背景

我们正在处理只生成一大堆 XML 文件的 Oracle OSB。我们还生产用于集成测试的 Soap-UI 测试套件。

我们刚刚开始正式制定我们的编码标准和开发指南,这些东西在执行代码审查时为我们提供了指导。然而,很多这些检查真的觉得它们可以自动化。很像 checkstyle 如何在我们的 java 代码中进行检查。

例如,在我们的 Soap-UI 测试中,我们希望确保每个soap 请求都有Schema Compliance 和Soap Response 的断言。这个“检查”可以写成一个非常简单的 xpath。

我们的 OSB 中的类似检查生成了 XML,例如确保变量符合驼峰命名法、资源路径不引用项目外部的文件、存在顶级错误处理。

理想的解决方案

我们已经在 maven 中运行了构建,soap-ui 测试正在吐出肯定格式的报告。我们使用 jenkins 作为我们的 CI 服务器,它能够获取这些可靠的报告,因此我们可以轻松查看测试结果并了解构建失败的原因。

我们希望找到可以为我们执行这些检查的东西,并让它们在 jenkins 中干净地报告。

到目前为止我能想到的最好的:

  • 让 maven 运行运行 schematron 检查的 ant 任务
  • 找到一种将 schematron 输出转换为安全输出的方法
  • 修改 jenkins maven-runner 以获取生成的肯定报告

但感觉就像我被困在了这里的兔子洞里。如果这是解决此问题的正确方法,我认为其他人已经解决了这个问题,但很难找到任何关于将 schematron 与 CI 工具或 maven 集成的有用信息。

schematron 值得研究吗?

是否有其他工具可以更紧密地与我们现有的设置集成,更适合?

4

2 回答 2

1

您可能会尝试将XmlUnit用于此类目的。

在那种情况下,您会以 JUnit 测试的形式编写检查。在 XmlUnit 断言方法的帮助下,可以轻松执行基于 XPath 的简单检查,例如assertXpathExistsassertXpathsEqual

可以使用自定义NodeTester实现更复杂的检查。

于 2012-01-27T20:28:26.313 回答
0

一些 Python 代码可以提供帮助,有关带有 OSB 的 Checkstyle 的简单工作示例,请参见:

http://www.javamonamour.org/2013/07/lintcheckstyle-for-osb.html

我过去使用过 Schematron,只是不够灵活。

于 2013-07-19T18:45:08.837 回答