• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 追求代碼質量: 探究 XMLUnit

    發表于:2008-06-23來源:作者:點擊數: 標簽:代碼質量探究XMLUnit
    在軟件開發周期中,需要不時地驗證 XML 文檔的結構或內容。不管構建的是何種應用程序, 測試 XML 文檔都具有一定的挑戰性,尤其是在沒有相關工具的情況下就更是如此。 本月,我將首先向您說明為何不能 使用 String 比較來驗證 XML 文檔的結構和內容。之后,

    在軟件開發周期中,需要不時地驗證 XML 文檔的結構或內容。不管構建的是何種應用程序,測試 XML 文檔都具有一定的挑戰性,尤其是在沒有相關工具的情況下就更是如此。

    本月,我將首先向您說明為何不能 使用 String 比較來驗證 XML 文檔的結構和內容。之后,我會介紹 XMLUnit,一個由 Java 開發人員創建并可服務于 Java 開發人員的 XML 驗證工具,向您展示如何使用它來驗證 XML 文檔。

    古典的 String 比較

    首先,假設您已經構建了一個應用程序,該應用程序可以輸出代表對象依賴性報告的 XML 文檔。對于給定的類和對應的過濾器的集合,會生成一個報告來輸出類和類的依賴項(想象一下導入)。

    清單 1 顯示了用于給定類列表(com.acme.web.Widget 和 com.acme.web.Aclearcase/" target="_blank" >ccount)的報告,過濾器被設為忽略外部類,比如 java.lang.String:

     

    清單 1. 一個示例依賴性 XML 報告
        
    <DependencyReport date="Sun Dec 03 22:30:21 EST 2006">
      <FiltersApplied>
        <Filter pattern="java|org"/>
        <Filter pattern="net."/>
      </FiltersApplied>
      <Class name="com.acme.web.Widget">
        <Dependency name="com.acme.resource.Configuration"/>
        <Dependency name="com.acme.xml.Document"/>
      </Class>
      <Class name="com.acme.web.Account">
        <Dependency name="com.acme.resource.Configuration"/>
        <Dependency name="com.acme.xml.Document"/>
      </Class>
    </DependencyReport>
     


    清單 1 很明顯是由應用程序生成的;因而,第一層測試就是驗證應用程序是否真能生成一個文檔。一旦驗證了這一點,就可以繼續測試指定文檔的其他三個方面:

    結構
    內容
    指定內容
    可以通過單獨使用 JUnit 利用 String 比較處理上述前兩個方面,如清單 2 所示:

     

    清單2. 硬性驗證 XML
        
    public class XMLReportTest extends TestCase {

     private Filter[] getFilters(){
      Filter[] fltrs = new Filter[2];
      fltrs[0] = new RegexPackageFilter("java|org");
      fltrs[1] = new SimplePackageFilter("net.");
      return fltrs;
     }

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>