java - JAXB 测试手工制作的 bean

标签 java xml unit-testing xsd jaxb

我有一大堆手工制作的 JAXB 注释文件和一些手工制作的 xsd 文件。我还有一些示例 xml 文件,它们应该创建大多数 JAXB bean 并设置大多数字段。

如何测试是否设置了所有重要 (95%) 属性?我不想手动测试每个 bean 的每个属性。

如果手工制作的 bean 与 xsd 文件匹配,我是否也可以或作为替代测试?

最佳答案

有几种方法可以处理这个问题,最终应该为您提供某种自动化;但这完全取决于您的类和 XSD 的复杂程度。

我将从使用 JAXB 的 schemagen 开始针对您已经拥有的一组类(class)。它可能需要您可能必须添加到当前代码库中的其他注释。有了该 XSD,您可以(主要是手动)比较两个 XSD 以查看它们是否相似。如果在您的模型 XSD 中使用 choices、all、abstractions、groups 等,事情可能会变得棘手。

然后我会使用 XSD 工具:

  • 为给定的根元素从这两个集合生成所有可能的 XPath,以确保您获得相同的覆盖范围。
  • 使用其中一个 XSD 自动生成 XML 示例,具体取决于哪个是您的黄金副本,然后使用另一个 XSD 对其进行验证 - 以发现不一致之处,并使用您现有的代码解码 XML。<

一旦解码,如 Blaise 所述,编码和比较(理想情况下使用模式感知 XML 比较,然后 XML 感知,文本比较很可能是无用的)。

关于java - JAXB 测试手工制作的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9585666/

相关文章:

xml - 如何使用 XSLT 1.0 查找 XML 节点的存在

wpf行为单元测试

java - 如何写入不同包中的xml文件

java - 在正在运行的 java 程序的后台执行 jsp 程序

java - 使用配置单元出现异常 java.lang.NoClassDefFoundError : org/apache/tez/dag/api/SessionNotRunning

java - 如何根据找到的字符进行异常(exception)处理

android - 约束布局TextView重叠

c++ - 单元测试大型Qt项目

c# - 如何配置 Resharper 5.1 的 Test Runner 以接受网络共享?

java - 策略设计模式、泛型和类型安全