SQLUnit quick start guide

           

                 SQLUnit是一個用于對存儲過程進行單元測試的工具,其實也可以用于做針對數據庫數據、性能的測試等,延續(xù)了xUnit家族的一貫特性和風格,只不過它的測試是以xml的方式來編寫,但原則仍然和xUnit家族其他產品一樣,強調的是輸出和預期的比較,SQLUnit的文檔比較的少,由于官方站上并沒有提供類似其他開源工具的quick start guide,就寫了這篇quick start guide以便大家快速的使用sqlunit,至于SQLUnit的高級用法還是得去多看看sqlunit.sf.net官方站上的文檔。

                 為了讓大家能快速的開始入門使用SQLUnit,將介紹SQLUnit環(huán)境的搭建、如何編寫一個單元測試、如何運行。

          1          SQLUnit環(huán)境的搭建

          SQLUnit依賴jdkant,因此首先需要搭好jdkant的環(huán)境,jdk建議使用1.5以上的版本,ant使用1.6.5以上的版本即可。

          搭建好jdkant的環(huán)境后,從sqlunit.sf.net上下載最新版本的SQLUnit,下載完畢后解壓至目錄即可,這樣就完成了SQLUnit環(huán)境的搭建。

          2          編寫第一個單元測試

          開始來編寫我們的第一個單元測試,基于SQLUnit的單元測試以編寫xml的方式來實現,在目錄下創(chuàng)建一個demo.xml文件。

          這個單元測試用來測試一個名為DEMO_SP的存儲過程,這個存儲過程需要輸入一個字符串參數,輸出的為一個記錄集和一個字符串。

          當輸入bluedavy時,期待輸出的記錄集中為一條記錄,內容為:

          ID     USERNAME

          2      bluedavy

          輸出的字符串為:”Hello:bluedavy”

          在確定了輸入和期待的輸出后,可以開始動手來編寫demo.xml了,編寫完畢后整個demo.xml文件的內容如下:

          <?xml version="1.0" encoding="GBK"?>

          <!DOCTYPE sqlunit SYSTEM "file:docs/sqlunit.dtd">

          <sqlunit>

           

            <!--數據庫連接信息-->

            <connection connection-id="1">

              <driver>oracle.jdbc.driver.OracleDriver</driver>

              <url>jdbc:oracle:thin:@數據庫IP:1521:數據庫實例</url>

              <user>用戶名</user>

              <password>密碼</password>

            </connection>

           

            <test name="用戶名為bluedavy時的測試" failure-message="根據用戶名執(zhí)行存儲過程錯誤">

                   <call connection-id="1">

                        <stmt>{call DEMO_SP(?,?,?)}</stmt>

                        <param id="1" type="VARCHAR" inout="in">bluedavy</param>

                        <param id="2" type="CURSOR" inout="out">${p_cursor}</param>

                        <param id="3" type="VARCHAR" inout="out">${p_message}</param>

                   </call>

                   <result>

                        <outparam id="2" type="CURSOR">

                          <resultset id="1">

                               <row id="1">

                                 <col id="1" type="INTEGER">2</col>

                                 <col id="2" type="VARCHAR">bluedavy</col>

                               </row>

                          </resultset>

                        </outparam>

                        <outparam id="3" type="VARCHAR">Hello:bluedavy</outparam>

                   </result>

          </test>

          由上可知,基于SQLUnit編寫一個存儲過程的單元測試還是非常容易的,如果是對于函數的測試,只需要將上面的<stmt>改成這樣的格式即可:<stmt>{?=call 函數名(?,?)}</stmt>

          對于熟悉xUnit家族工具的同學們而言,一個sqlunit單元測試的xml文件就相當于一個單元測試類,而其中的<test></test>就相當于測試一種輸入情況的方法。

          3          運行單元測試及生成報表

          上面的單元測試是對oracle的存儲過程進行測試的,因此在運行前需要將oracle驅動的jar文件放入sqlunitlib目錄下,或安裝oracle客戶端。

          一切準備妥當后,首先將sqlunit目錄下的build.xml中的

          <sqlunit testfile="${testfile}" haltOnFailure="true" debug="${debug}"

                  logfile="${output.file}" logformat="${log.format}" />

          修改為:

          <sqlunit testfile="${testfile}" haltOnFailure="false" debug="${debug}"

                  logfile="${output.file}" logformat="${log.format}" />

          避免由于測試的失敗造成報表也無法生成。

          修改完畢后可進入命令行,進入sqlunit的目錄,運行如下命令:

          ant -Dlog.format=canoo -Doutput.file=demotest.xml -Dtestfile=demo.xml sqlunit-flat canoo2html

          運行完畢后,就可在sqlunit下的output目錄中找到demotest.html,打開就可看到此次單元測試運行的報告了,如發(fā)現報告中未生成單元測試失敗的詳細信息,則需要把lib目錄下的sqlunit-5.0.jar刪除或移至其他目錄。

           

                 作為一個quick start guide,就只介紹到這了,其他的像sqlunitxmltestoutparam這些標簽的具體含義和示例、如何Mock Database等可以到sqlunit官方網站(http://sqlunit.sf.net)上查看。

          posted on 2007-11-08 16:59 BlueDavy 閱讀(3191) 評論(0)  編輯  收藏 所屬分類: Java

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導航

          <2007年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          統計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永顺县| 安新县| 阳信县| 遵义县| 辽中县| 南阳市| 黔江区| 高要市| 宜春市| 周口市| 黎川县| 北安市| 金秀| 广汉市| 卓资县| 苏州市| 清涧县| 石渠县| 四子王旗| 昭觉县| 翼城县| 荥经县| 耿马| 丰顺县| 岫岩| 扎兰屯市| 高台县| 天镇县| 鄂托克旗| 璧山县| 祁东县| 体育| 牙克石市| 库车县| 康乐县| 九寨沟县| 仁化县| 云梦县| 通榆县| 托克托县| 安多县|