此问题的.net版本已在此处解答:XML input/output with Fitnesse
我需要使用Fitnesse的Java版本来实现这一点,似乎没有任何相似之处。我有一些接受XML并返回XML的测试,所以我需要输入和预期输出来处理字段中的XML。我已经尝试了各种html转义,但这似乎并没有在比较方面完成工作。 XML是任意的,所以我无法将其解析为域对象并比较各个字段(嗯,我可以,但是会有大量不同的对象映射)。
有人找到以通用方式处理此问题的方法吗?存在于某处的自定义Java等效的.net解决方案?
答案 0 :(得分:0)
不确定这是否是最佳解决方案。您可能想要使用一些XML框架,例如XStream具有非常简单的API,可将XML
转换为JAVA
个对象。使用它,您可能希望在JAVA中转换两个XML文件并使用JAVA比较。
简单的步骤是:
MyXMLObj
映射Java属性中的XML属性。equals
中创建/生成MyXMLObj
方法。将您的XML转换为Java:
XStream xstream = new XStream();
XStream xstream = new XStream(new DomDriver());
//or
//XStream xstream = new XStream(new StaxDriver());
MyXMLObj myXMLObj1= (MyXMLObj)xstream.fromXML(xml1);
MyXMLObj myXMLObj2= (MyXMLObj)xstream.fromXML(xml2);
只需将两个对象比较为:
if(myXMLObj1.equals(myXMLObj2)){
System.out.println("Matching");
}else{
System.out.println("Not Matching");
}
答案 1 :(得分:0)
我遇到类似的情况,xml响应将来可能会发生变化,或者不会一直确认特定的样式,或者xml不会作为xml对象返回而是返回字符串等。
我编写了一个通用的fixture,它将获取一个xml字符串并解析它以给我们一个xml doc对象。我还将从wiki捕获xml元素路径和期望值,并确认预期值是否是使用xpath存储在xml中的值。
!|ValidateXmlValue |
|xmlString|xmlElem |getXMLvalue? |
|$respBody|/root/childnode1/ |${variable} |
这样,用户可以灵活地通过简单地给出该节点的完整路径并将其与输入变量等进行比较来查询节点值。即使某些内容发生变化,也只需要更改测试(您可以存储每个xml的路径)变量中的元素,作为设置步骤的一部分)