<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            淺析數據庫程序的單元測試[1]

            發(fā)表于:2008-07-01來(lái)源:作者:點(diǎn)擊數: 標簽:數據庫單元程序淺析
            關(guān)鍵字: 現實(shí)的問(wèn)題是這樣的:你有一個(gè) SQL 數據庫 ,一些存儲過(guò)程和一個(gè)介于應用程序和數據庫之間的中間層。你怎樣在其中插入測 試代碼從而保證在數據庫中數據存取功能的實(shí)現? 為什么會(huì )有這樣的問(wèn)題? 我猜想有些,可能不完全是大多數的數據庫 開(kāi)發(fā) 過(guò)程都是
            關(guān)鍵字:

            現實(shí)的問(wèn)題是這樣的:你有一個(gè)SQL數據庫,一些存儲過(guò)程和一個(gè)介于應用程序和數據庫之間的中間層。你怎樣在其中插入測

              試代碼從而保證在數據庫中數據存取功能的實(shí)現?

              為什么會(huì )有這樣的問(wèn)題?

              我猜想有些,可能不完全是大多數的數據庫開(kāi)發(fā)過(guò)程都是這樣的:建立數據庫,編寫(xiě)存取數據到數據庫的代碼,編譯并運行,用一個(gè)查詢(xún)語(yǔ)句查驗所列的數據是否正確顯示。如果能正確顯示那就大功告成了。

              然而,這種靠眼睛來(lái)檢測的弊端在于:你不經(jīng)常進(jìn)行這樣的檢驗,而且這種檢驗是不完全的。存在這樣的可能性,當你對系統進(jìn)行了修改,過(guò)了幾個(gè)月后,你無(wú)意中破壞了系統,從而導致數據的丟失。作為一個(gè)編程人員,你可能不會(huì )花很多時(shí)間來(lái)檢查數據本身,這就使錯誤的數據要經(jīng)過(guò)較長(cháng)的時(shí)間才能暴露出來(lái)。我曾經(jīng)參與一個(gè)建立網(wǎng)站的項目,該項目中在注冊時(shí)有一個(gè)必填數據在大半年中沒(méi)有被發(fā)現未實(shí)際輸入進(jìn)數據庫。盡管公司市場(chǎng)部曾經(jīng)提出他們需要這一信息,但因為這項數據從來(lái)沒(méi)有人去看它,直接導致了這一問(wèn)題在很長(cháng)時(shí)間內沒(méi)有被發(fā)現。

              自動(dòng)化測試,由于它能經(jīng)常測試而且測試范圍較廣,降低了數據丟失的風(fēng)險。我發(fā)現它能使我更心安理得地休息。當然,自動(dòng)化測試還有其他一些好處,他們本身就是代碼編寫(xiě)的范例,也可以作為文檔,便于你修改別人編寫(xiě)的原始程序,從而減少檢測所需的時(shí)間。

              什么是我們所談?wù)摰臏y試?

              設想有一個(gè)非常簡(jiǎn)單的用戶(hù)數據庫,包括用戶(hù)電子信箱和一個(gè)標志,用來(lái)指示郵件地址是否被彈回。你的數據庫程序應該包括插入、修改、刪除和查詢(xún)等方法

              插入方法會(huì )調用一個(gè)存儲過(guò)程將數據寫(xiě)入數據庫。為了敘述方便,這里省去了一些細節,大致的程序如下所示:

              public class UserDatabase

              {

              ...

              public void insert(User user)

              {

              PreparedStatement ps = connection.prepareCall("

              { call User_insert(?,?) }");

              ps.setString(1, user.getEmail());

              ps.setString(2, user.isBad());

              // In real life, this would be a boolean.

              ps.executeUpdate();

              ps.close();

              }

              ...

              }

              而我認為的測試代碼應為:

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

            ...
            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>