Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXB测试手工制作的bean_Java_Xml_Unit Testing_Xsd_Jaxb - Fatal编程技术网

Java JAXB测试手工制作的bean

Java JAXB测试手工制作的bean,java,xml,unit-testing,xsd,jaxb,Java,Xml,Unit Testing,Xsd,Jaxb,我有一大堆手工制作的JAXB注释文件和一些手工制作的xsd文件。我还提供了一些示例xml文件,它们应该创建大多数JAXB bean并设置大多数字段 如何测试是否设置了所有重要(95%)属性?我不想手工测试每个bean的每个属性 如果手工制作的bean与xsd文件匹配,我还可以或者作为替代测试吗?您可以解组控制XML文档,然后将它们封送回XML。然后比较这两个XML文档以确保它们包含相同的内容。这将验证往返情况。有两种方法可以处理此问题,最终应为您提供某种自动化;但这完全取决于类和XSD的复杂程度

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

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


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

您可以解组控制XML文档,然后将它们封送回XML。然后比较这两个XML文档以确保它们包含相同的内容。这将验证往返情况。

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

首先,我将针对您已经拥有的一组类使用JAXB。它可能需要您必须添加到当前代码库中的附加注释。有了这个XSD,您可以(主要是手动)比较这两个XSD,看看它们是否相似。如果在模型XSD中使用选择、全部、抽象、组等,事情可能会变得棘手

然后我将使用XSD工具:

  • 从这两个集合中为给定的根元素生成所有可能的XPath,以确保具有相同的覆盖率
  • 要使用其中一个XSD自动生成XML样本(取决于哪个XSD是您的黄金拷贝),然后使用另一个XSD进行验证,以发现不一致之处,并使用现有代码对XML进行解组
如Blaise所述,一旦解组,marshall和compare(理想情况下使用一个支持模式的XML比较,那么支持XML的文本比较很可能是无用的)