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

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

  • <strong id="5koa6"></strong>
    • 測試技術
    • 博客
    • 視頻
    • 開源
    • 論壇
    • 沙龍
    • 下載
    • 雜志
    • 招聘

    字號: | 推薦給好友 上一篇 | 下一篇

    對DAO編寫單元測試

    發布: 2008-6-15 14:46 | 作者: 不詳 | 來源: 領測軟件測試網編輯整理 | 查看: 43次 | 進入領測軟件測試網論壇討論

    領測軟件測試網

    Uxf)s^ 軟件測試技術門戶(]ei*w*y8UFw5_

      注意DatabaseFixture的createProxy()方法,它將一個普通的DAO對象包裝為在事務范圍內執行的代理對象,即對于一個普通的DAO對象的方法調用前后,自動地開啟事務并根據異常情況提交或回滾事務。軟件測試技術門戶0O'p v.xc4{ia

    軟件測試技術門戶,L2U!c,AI~[+K

      下面是UserDaoImpl的單元測試類:軟件測試技術門戶4Rv};WH j7E

     public class UserDaoImplTest extends DatabaseFixture {
    pvk,D8Aw private UserDao userDao = new UserDaoImpl();
    #~'H&p?Rb private UserDao proxy = (UserDao)createProxy(userDao); @Test
    +b HHt.L?M public void testQueryUser() {
    P wF]+O])V&o User user = newUser("test");軟件測試技術門戶.oFW:oMC4u
    proxy.createUser(user);軟件測試技術門戶A~4F5l8v(r9?
    User t = proxy.queryUser("test");軟件測試技術門戶3B&O^p e3l!@m If
    assertEquals(user.getEmail(), t.getEmail());
    j%G_~!On/gI }
    -} w6~*v8t.E }
    軟件測試技術門戶,J7H*jFj CBv0hWpc"\b

      注意到UserDaoImplTest持有兩個UserDao引用,userDao是普通的UserDaoImpl對象,而proxy則是將userDao進行了事務封裝的對象。

    2D H#X,|*E(d$Z pM

    [B X4?p'g1W4C  由于UserDaoImplTest從DatabaseFixture繼承,因此,@Before方法在每個@Test方法調用前自動調用,這樣,每個@Test方法執行前,數據庫都是一個經過初始化的“干凈”的表。軟件測試技術門戶:{!K#U&Vo9x2^;D8K\A

    軟件測試技術門戶 I:A3j.t \:h/F8i#@1f

      對于普通的測試,如UserDao.queryUser()方法,直接調用proxy.queryUser()即可在事務內執行查詢,獲得返回結果。

    rnZF'jE)G@Xc 軟件測試技術門戶 K'I1p:W4H

      對于異常測試,例如期待一個ResourceNotFoundException,就不能直接調用proxy.queryUser()方法,否則,將得到一個UndeclaredThrowableException:

    8k;^3WEI;V!U P;]

    9m!n!cu,dbe  對DAO編寫單元測試 圖-3軟件測試技術門戶1A#w3KHW

    tH*s(lt  這是因為通過反射調用拋出的異常被代理類包裝為UndeclaredThrowableException,因此,對于異常測試,只能使用原始的userDao對象配合TransactionCallback實現:軟件測試技術門戶#W2At/Q/^ | e u

     @Test(expected=ResourceNotFoundException.class)
    ,f&vE1_ VXQ[/v public void testQueryNonExistUser() throws Exception {軟件測試技術門戶 老湿亚洲永久精品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>