隨筆-55  評(píng)論-208  文章-0  trackbacks-0
          昨天在公司內(nèi)部開會(huì),分享我的單元測(cè)試經(jīng)驗(yàn),當(dāng)我在提到有關(guān)dao的增刪改操作一般是直接使用HibernateTemplate的相關(guān)方法,所以沒有必要對(duì)相關(guān)dao方法進(jìn)行測(cè)試時(shí)。
          public?void?saveComment(CsComment?comment)?{
          ????????getHibernateTemplate().saveOrUpdate(comment);
          ????}

          就此引發(fā)了一場(chǎng)爭(zhēng)論,有同事提出疑問說,為什么不需要對(duì)增刪改方法進(jìn)行測(cè)試,增刪改方法也是DAO中一個(gè)具體實(shí)現(xiàn)功能,那么針對(duì)于這個(gè)功能就應(yīng)該進(jìn)行測(cè)試。

          對(duì)于這個(gè)問題,我的理解是,首先應(yīng)該明確單元測(cè)試的目的是什么,究竟是測(cè)試功能,還是測(cè)試代碼
          如果要測(cè)試功能,那么一個(gè)功能應(yīng)該是縱向的,dao,bl,action都會(huì)有相應(yīng)的增刪改方法,那么3者之間的測(cè)試又有什么不同呢?
          所以,單元測(cè)試,就是在檢測(cè)你的代碼,如果你的一個(gè)方法只是簡(jiǎn)單的對(duì)其他的方法調(diào)用,如上面這個(gè)方法,那么我認(rèn)為就沒有必要花費(fèi)這個(gè)代價(jià)來(lái)進(jìn)行單元測(cè)試,我們不是為了寫測(cè)試代碼而寫單元測(cè)試,單元測(cè)試保證的是我的代碼質(zhì)量,不是在測(cè)試我的功能。功能測(cè)試是由相應(yīng)的功能測(cè)試來(lái)完成。
          posted on 2007-02-07 14:41 rocket 閱讀(2334) 評(píng)論(10)  編輯  收藏

          評(píng)論:
          # re: 單元測(cè)試究竟是測(cè)試什么? 2007-02-07 14:46 | 交口稱贊
          不要拘泥于理論
          代碼的目的還是實(shí)現(xiàn)功能

          俺的看法是
          測(cè)你想測(cè)的
          測(cè)你最不放心的
          測(cè)最重要的

          我覺得單元測(cè)試最主要的是讓我放心,
          半年以后改了A、跑跑下測(cè)試沒問題

          我就很自信我不放心的、我關(guān)心的B、C、D都沒問題  回復(fù)  更多評(píng)論
            
          # re: 單元測(cè)試究竟是測(cè)試什么? 2007-02-07 15:13 | rocket
          @交口稱贊
          當(dāng)然不是為了理論,我使用實(shí)踐的經(jīng)歷來(lái)說明。
          我在一開始也會(huì)為增刪改等方法編寫單元測(cè)試,但是在項(xiàng)目進(jìn)行中我發(fā)現(xiàn)這樣的測(cè)試是沒有意義的,只是在浪費(fèi)我緊張的項(xiàng)目時(shí)間。

          就你的例子來(lái)說,如果你沒有改動(dòng)你的實(shí)現(xiàn)代碼,那么你的bcd是不可能出現(xiàn)問題的。如果你改動(dòng)了A實(shí)現(xiàn)代碼,bcd出現(xiàn)了問題,那么要們是你的程序耦合過高,要么是你的方法需求發(fā)生的變動(dòng)。
          單元測(cè)試就是在測(cè)試你的實(shí)現(xiàn)代碼,如果要是從功能點(diǎn)來(lái)看的話,一個(gè)功能點(diǎn)的實(shí)現(xiàn)將是縱向的。而不是一段代碼能夠完成的事情。  回復(fù)  更多評(píng)論
            
          # re: 單元測(cè)試究竟是測(cè)試什么? 2007-02-08 09:12 | 交口稱贊
          程序耦合過高
          到不一定。。。。。。。。。
          A提供給BCD用的呢

          在一開始也會(huì)為增刪改等方法編寫單元測(cè)試,但是在項(xiàng)目進(jìn)行中我發(fā)現(xiàn)這樣的測(cè)試是沒有意義的,只是在浪費(fèi)我緊張的項(xiàng)目時(shí)間。
          同意啊,
          CRUD方法如果都是繼承出來(lái)的,真沒必要去測(cè)。。。。。。。。
          偶們現(xiàn)在就不測(cè)他  回復(fù)  更多評(píng)論
            
          # re: 單元測(cè)試究竟是測(cè)試什么? 2007-02-08 10:01 | DoubleHeart
          應(yīng)該從Service層開始測(cè)起。  回復(fù)  更多評(píng)論
            
          # re: 單元測(cè)試究竟是測(cè)試什么? 2007-02-08 14:16 | cjsteven
          應(yīng)該還和你的單元范圍有關(guān)  回復(fù)  更多評(píng)論
            
          # re: 單元測(cè)試究竟是測(cè)試什么? 2007-02-08 14:51 | hgq0011
          我一般從action,service,bl,dao層一起測(cè)試,那樣一個(gè)功能就測(cè)試完了。我最不喜歡的是從客戶端(IE)來(lái)測(cè),那樣測(cè)試真痛苦(有時(shí)重啟一下服務(wù)要等,慢呀)。  回復(fù)  更多評(píng)論
            
          # re: 單元測(cè)試究竟是測(cè)試什么? 2007-02-21 00:51 | sunflower
          個(gè)人覺得使用JUnit就測(cè)一些關(guān)鍵的算法方法,其他測(cè)的沒必要.
          重起一下tomcat花不了多長(zhǎng)時(shí)間,看內(nèi)存的多少了.如果3層都測(cè)的話真的很浪費(fèi)時(shí)間.主要還是測(cè)bl層.^-^  回復(fù)  更多評(píng)論
            
          # re: 單元測(cè)試究竟是測(cè)試什么? 2007-02-21 01:08 | sunflower
          還有不想依賴第3方的JUnit包,這樣會(huì)增加測(cè)試代碼的藕合性.
          個(gè)人覺得.^-^  回復(fù)  更多評(píng)論
            
          # re: 單元測(cè)試究竟是測(cè)試什么? 2007-03-15 09:11 | rocket
          @sunflower
          不用工具你怎么模擬容器,請(qǐng)用實(shí)踐說話,呵呵,不要空談  回復(fù)  更多評(píng)論
            
          # re: 單元測(cè)試究竟是測(cè)試什么?[未登錄] 2011-11-16 21:05 | 王輝
          單元測(cè)試是在測(cè)邏輯,包括條件判定,循環(huán)等。博主的這段代碼不包括任何邏輯,當(dāng)然不需要用單元測(cè)試去覆蓋。  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 长岛县| 时尚| 襄垣县| 永康市| 察隅县| 当阳市| 白水县| 巴林左旗| 富锦市| 木兰县| 长顺县| 马尔康县| 贞丰县| 寻甸| 锦州市| 信丰县| 安泽县| 上犹县| 望江县| 怀宁县| 阿拉善盟| 塔城市| 阿拉尔市| 东莞市| 凤阳县| 礼泉县| 固镇县| 措美县| 霞浦县| 班玛县| 龙游县| 万州区| 临猗县| 东兴市| 东台市| 郸城县| 科技| 花莲市| 灵寿县| 庄河市| 镇江市|