用例 -
1。)根据属性给出任何Two objects
,compare
属性。
2。)它还包含Collections
,现在比较两个对象的集合,现在内部集合中相同的数据可以颠倒,意思是说我有List<Address>
,它包含两个条目(比如Residential Address
,Office Address
),但在两个列表中,数据可能位于不同的索引处。
3.。)需要创建相同类型的3rd Object
,复制相似的数据,并使用不同的数据将属性设置为null。
4。)它也可能有引用类。
我厌倦了许多解决方案,但是在某处或另一方面,我正在考虑编写一些通用的解决方案。虽然两个对象中有generating two xml's
,然后逐个节点地进行比较,但只想获得更多选项。
或者Java reflection
在这种情况下更强大。
答案 0 :(得分:0)
回答@markspace问题。
要访问private field
,您需要调用Class.getDeclaredField(String name)
或Class.getDeclaredFields()
方法。方法Class.getField(String name)
和Class.getFields()
方法仅return public fields
,因此它们不起作用。
要访问private method
,您需要调用Class.getDeclaredMethod(String name, Class[] parameterTypes)
或Class.getDeclaredMethods()
方法。方法Class.getMethod(String name, Class[] parameterTypes)
和Class.getMethods()
方法仅return public methods
。
XMLUnit
将起作用,它会递归地比较列表引用,也可以选择排除您不想比较的字段。
String expectedXML = "some xml";
String actualXML = "some xml";
DetailedDiff diff1 = new DetailedDiff(XMLUnit.compareXML(expectedXML, actualXML));
diff1.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
System.out.println("Differences found: " + diff1.getAllDifferences().toString());
<强> RecursiveElementNameAndTextQualifier 强>
比较两个XML中的所有Element和Text节点。允许 返回的复杂,深层嵌套类型的元素 不同的订单但具有相同的内容被识别为 可比性。