1

此处回答了此问题的 .net 版本:XML input/output with Fitnesse

我需要使用 Fitnesse 的 Java 版本来做到这一点,而且似乎没有类似的东西。我有一些接受 XML 并返回 XML 的测试,因此我需要输入和预期输出来处理字段中的 XML。我尝试了各种 html 转义,但这似乎并没有在比较方面完成工作。XML 是任意的,因此我无法将其解析为域对象并比较各个字段(好吧,我可以,但会有大量不同的对象映射)。

任何人都可以找到以通用方式处理此问题的方法吗?存在于某处的 .net 解决方案的自定义 Java 等价物?

4

2 回答 2

0

不确定这是否是最佳解决方案。您可能想要使用一些 XML 框架,例如XStream,它具有非常简单的 API 可以转换XMLJAVA对象。使用它,您可能希望在 JAVA 中转换两个 XML 文件并使用 JAVA 比较。

简单的步骤是:

  1. 定义简单 Java 对象 (POJO),例如MyXMLObj将 XML 属性映射到 Java 属性中。
  2. equals在上述 POJO 类中创建/生成方法MyXMLObj
  3. 将 Java 中的 XML 转换为:

    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);
    
  4. 只需将两个对象比较为:

     if(myXMLObj1.equals(myXMLObj2)){
        System.out.println("Matching");
     }else{
        System.out.println("Not Matching");
     }
    
于 2012-10-19T21:08:39.680 回答
0

我遇到了类似的情况,其中 xml 响应将来可能会发生变化或始终无法确认特定样式,或者 xml 不作为 xml 对象返回,而是返回字符串等。

我写了一个通用的fixture,它接受一个xml字符串并解析它给我们一个xml doc对象。我还将从 wiki 捕获 xml 元素路径和预期值,并确认预期值是存储在 xml 中还是不使用 xpath。

!|ValidateXmlValue                                                                |
|xmlString|xmlElem                                       |getXMLvalue?            |
|$respBody|/root/childnode1/                             |${variable}             |

通过这种方式,用户可以灵活地查询节点值,只需提供该节点的完整路径并将其与输入变量等进行比较。即使发生变化,也只需要更改测试(您可以将每个 xml 元素的路径存储在变量以及,作为设置步骤的一部分)

于 2016-03-22T14:41:46.167 回答