DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> xml文件比較或xml大字符串比較要領(蠻精簡的)
xml文件比較或xml大字符串比較要領(蠻精簡的)
編輯:XML詳解     

現在測試很多接口返回的類型是XML的字符串,當返回值為較小的值的時候。期望結果直接寫在代碼裡邊是靠普的。
但是當返回結果相當大的時候,期望值保存在哪裡呢,以前我也做過直接寫在代碼裡,結果造成代碼行相當的長,幾乎
一個測試用例只能看見期望結果的數據了,自然不好。那麼如果存在文件裡如何 呢?可能會有這樣的疑問存在文件裡如何 比較
呢,采用文本內容比較嗎?總覺得不太靠普,至少XML特征沒能體現,譬如不能告訴我是哪個節點出錯了。
今天我發覺 xmlunit有這個功能(有點後知後覺,大家不要笑話);而且結合XML其他的jar包可以高速處理這個疑問,而且代碼
也很精簡
特貼代碼如下
 public void tet() throws Exception
 {
  String actXmlText ="<?XML version=\"1.0\" encoding=\"utf-8\"?>" +"\r\n"+
  "<error_response>" +"\r\n"+
  " <args>" +"\r\n"+
  "  <arg></arg>" +"\r\n"+
  " </args>" +"\r\n"+
  " <code>16</code>" +"\r\n"+
  " <msg>wang wang service return error</msg>" +"\r\n" +
  " <sub_code>33000</sub_code>" +"\r\n" +
  " <sub_msg>wang wang service error: param error.</sub_msg>" +"\r\n" +
  "</error_response>";
  System.out.println(actXMLText);
  DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
  DocumentBuilder dombuilder=domfac.newDocumentBuilder();
  InputStream is= new FileInputStream("c:/11.XML");
  Document doc = dombuilder.parse(is);
  InputStream is1 = new FileInputStream("c:/12.XML");
  Document doc1 = dombuilder.parse(is1);
  Document doc2  =  dombuilder.parse( new  ByteArrayInputStream(actXMLText.getBytes()));
  XMLAssert.assertXMLEqual(doc2, doc);
  XMLAssert.assertXMLEqual(doc2, doc1);
 }
 這裡為了方便代碼展示沒有將actXMLText寫成大字符串,實際上通常測試場景中這個代表調用接口返回值
 代碼會是類似下面的代碼
  WebConversation conversation = new WebConversation();
  WebRequest request = new PostMethodWebRequest(Url);
  WebResponse response = conversation.getResponse(request);
  System.out.println(response.getText());
  String actXMLText = response.getText();
 測試結果不正確

會報如下內容,明確告訴你哪個節點出錯了:
  junit.framework.AssertionFailedError: org.custommonkey.XMLunit.Diff
[different] Exp ected 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]

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved