`
linkyou66
  • 浏览: 228169 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

xml文件对比或xml大字符串对比方法(蛮精简的)

 
阅读更多
<p>现在测试很多接口返回的类型是xml的字符串,当返回值为较小的值的时候。期望结果直接写在代码里边是靠普的。<br>但是当返回结果相当大的时候,期望值保存在哪里呢,以前我也做过直接写在代码里,结果造成代码行相当的长,几乎<br>一个测试用例只能看见期望结果的数据了,自然不好。那么如果存在文件里如何呢?可能会有这样的问题存在文件里如何对比<br>呢,采用文本内容对比吗?总觉得不太靠普,至少xml特性没能体现,譬如不能告诉我是哪个节点出错了。<br>今天我发现xmlunit有这个功能(有点后知后觉,大家不要笑话);而且结合xml其他的jar包可以快速解决这个问题,而且代码<br>也很精简<br>特贴代码如下<br>public void tet() throws Exception<br>{<br>String actXmlText ="&lt;?xml version=/"1.0/" encoding=/"utf-8/"?&gt;" +"/r/n"+<br>"&lt;error_response&gt;" +"/r/n"+<br>"&lt;args&gt;" +"/r/n"+<br>"&lt;arg&gt;&lt;/arg&gt;" +"/r/n"+<br>"&lt;/args&gt;" +"/r/n"+<br>"&lt;code&gt;16&lt;/code&gt;" +"/r/n"+<br>"&lt;msg&gt;wang wang service return error&lt;/msg&gt;" +"/r/n" +<br>"&lt;sub_code&gt;33000&lt;/sub_code&gt;" +"/r/n" +<br>"&lt;sub_msg&gt;wang wang service error: param error.&lt;/sub_msg&gt;" +"/r/n" +<br>"&lt;/error_response&gt;";<br>System.out.println(actXmlText);<br>DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();<br>DocumentBuilder dombuilder=domfac.newDocumentBuilder();<br>InputStream is= new FileInputStream("c:/11.xml");<br>Document doc = dombuilder.parse(is);<br>InputStream is1 = new FileInputStream("c:/12.xml");<br>Document doc1 = dombuilder.parse(is1);<br>Document doc2 = dombuilder.parse( new ByteArrayInputStream(actXmlText.getBytes()));<br>XMLAssert.assertXMLEqual(doc2, doc);<br>XMLAssert.assertXMLEqual(doc2, doc1);<br>}<br>这里为了方便代码展示没有将actXmlText写成大字符串,实际上通常测试场景中这个代表调用接口返回值<br>代码会是类似下面的代码<br>WebConversation conversation = new WebConversation();<br>WebRequest request = new PostMethodWebRequest(Url);<br>WebResponse response = conversation.getResponse(request);<br>System.out.println(response.getText());<br>String actXmlText = response.getText();<br>测试结果错误会报如下内容,明确告诉你哪个节点出错了:<br>junit.framework.AssertionFailedError: org.custommonkey.xmlunit.Diff<br>[different] Expected text value ‘16′ but was ‘15′ – comparing 16 at /error_response[1]/code[1]/text()[1] to 15 at /error_response[1]/code[1]/text()[1]<br></p>
分享到:
评论

相关推荐

    复杂XML的解析及组装

    此包可以解决XML文件的解析、对象转化为XML字符串的问题。 1 通过调用解析类,可以将XML的DATA数据转换为XmlNode对象,XmlNode以树形结构进行XML的数据封装,使用的时候按照树形结构进行数据的获取。(如有问题请...

    xml2json:Dart的XML到JSON转换

    该软件包允许解析XML字符串,并将生成的解析树转换为以下XML JSON约定: 派克 ger鱼 谷歌数据(GData)。 该包使用解析器将XML数据解析为解析树。 确切的转换规则可以在下面找到。 Parker约定是从XML到JSON的...

    NET公共类库[转发]

    字符串实用类 StringUtil.cs 处理字符串分割,转换,嵌入等方法 类型转换类 TypeParse.cs 各种类型互相转换,如int string bool等 用户实用类 User.cs 登陆,退出时候身份加密或解除方式 验证码类 ValidateImage.cs 图片...

    Android代码-一个精简、全面、方便的AndroidLog库–ALog

    ALog Functions 兼容 Android Studio 3.1.0 的 ...支持控制台长字符串的输出 支持多参数输出 支持单独写入文件 支持 JSON 串的输出 支持 XML 串的输出 支持 Live Templates jar 包不足 5Kb API -&gt; ALog.java -

    色彩风暴 v17.0.0.0 精简版.zip

    8. 问题解决: 解决XML库在保存XML文件处理特殊字符串时可能导致缓冲区溢出的问题。 9. 问题解决: 解决打开外部加密RAR文件时程序崩溃的问题。 10. 问题解决: 解决尽管锁定缩放开关打开时无法锁定到匹配宽度,匹配...

    .NET公共类库(.NET 2.0)

    字符串实用类 类型转换类 用户实用类 验证码类 验证实用类 XML处理基类 数据出库处理类 常用类方法 网页界面功能类 UBB代码辅助类 客户端代码功能类 客户端代码精简类 HTML格式辅助类 数据压缩类 AjaxPro.dll ...

    javascrip上百技术总集

    JavaScript极速狂飙:组合拼接字符串的效率 JavaScript极速狂飙:CSS样式表的背景渲染效率 JavaScript面向对象的支持--(1) JavaScript面向对象的支持--(2) JavaScript面向对象的支持--(3) JavaScript...

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替&gt;会有更好的效果,因为 FreeMarker会把&gt;解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:(x&gt;y)&gt; ...

    AWTK开发手册-AWTK开发实践指南-中文手册.pdf

    支持国际化(Unicode、字符串翻译和输入法等)。 可移植。支持移植到各种RTOS和嵌入式Linux系统,并通过SDL在各种流行的PC/手机系统上运行。 脚本化。从API注释中提取API的描述信息,通过这些信息可以自动生成...

    http:简化的、轻量级的 HTTP 客户端库,是 apache httpclient 的包装器

    无需丑陋的字符串连接即可轻松添加路由参数 本机支持基本身份验证 每个请求的可定制标头 完全了解代理。 可定制的超时时间 支持 gzip 通过一套全面的开发人员测试实现良好的测试覆盖率,为库的质量提供保证 最小化...

    Delphi编程大师2003 1of5

    对于字符串进行DES加密的控件 在Delphi中制作扑克牌游戏的控件 eXperience dxPack12(一组dotNet控件) 界面控件ThemeEngine 3.2 界面控件Skinengine3.2.0 内存表控件 kbmMemTable TGifImage For D7 经本人修改过的...

    Delphi编程大师2003 5of5

    对于字符串进行DES加密的控件 在Delphi中制作扑克牌游戏的控件 eXperience dxPack12(一组dotNet控件) 界面控件ThemeEngine 3.2 界面控件Skinengine3.2.0 内存表控件 kbmMemTable TGifImage For D7 经本人修改过的...

    Delphi编程大师2003 3of5

    对于字符串进行DES加密的控件 在Delphi中制作扑克牌游戏的控件 eXperience dxPack12(一组dotNet控件) 界面控件ThemeEngine 3.2 界面控件Skinengine3.2.0 内存表控件 kbmMemTable TGifImage For D7 经本人修改过的...

    Delphi编程大师2003 2of5

    对于字符串进行DES加密的控件 在Delphi中制作扑克牌游戏的控件 eXperience dxPack12(一组dotNet控件) 界面控件ThemeEngine 3.2 界面控件Skinengine3.2.0 内存表控件 kbmMemTable TGifImage For D7 经本人修改过的...

    Delphi编程大师2003 4of5

    对于字符串进行DES加密的控件 在Delphi中制作扑克牌游戏的控件 eXperience dxPack12(一组dotNet控件) 界面控件ThemeEngine 3.2 界面控件Skinengine3.2.0 内存表控件 kbmMemTable TGifImage For D7 经本人修改过的...

    精易官方免费模块v3.60版

    5.完善 DLL“_宽字符到双字节”和“_宽字符到双字节1”的备注 方便区分 1.修复“编码_Unicode到Utf8”,感谢 90后辉煌 的提醒 2.修复“系统_取宽带用户名密码”因 编码_Unicode到Utf8 有问题导致的问题 感谢 wjjucwj...

    精易模块[源码] V5.15

    1、新增“效验_取md5_进度”,进度获取文件MD5值,支持大文件,采纳易友【@易模块】建议。 2、改善“程序_禁止重复运行”添加是否显示已运行的参数,此命令由易友【@小爬虫】改进。 3、修正“网页_取网址引用”不...

    Python基础教程(第3版)-201802出版-文字版

    41 3.2 设置字符串的格式:精简版 ................... 41 3.3 设置字符串的格式:完整版 ................... 43 3.3.1 替换字段名 .................................. 43 3.3.2 基本转换 .........................

Global site tag (gtag.js) - Google Analytics