隨筆-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à)來進(jìn)行單元測(cè)試,我們不是為了寫測(cè)試代碼而寫單元測(cè)試,單元測(cè)試保證的是我的代碼質(zhì)量,不是在測(cè)試我的功能。功能測(cè)試是由相應(yīng)的功能測(cè)試來完成。
          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)歷來說明。
          我在一開始也會(huì)為增刪改等方法編寫單元測(cè)試,但是在項(xiàng)目進(jìn)行中我發(fā)現(xiàn)這樣的測(cè)試是沒有意義的,只是在浪費(fèi)我緊張的項(xiàng)目時(shí)間。

          就你的例子來說,如果你沒有改動(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)來看的話,一個(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方法如果都是繼承出來的,真沒必要去測(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)來測(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)航:
           
          主站蜘蛛池模板: 微博| 吴堡县| 交城县| 合作市| 绥江县| 调兵山市| 连平县| 清水县| 沽源县| 乌拉特中旗| 东港市| 绵阳市| 三原县| 宁强县| 道孚县| 通渭县| 桃江县| 湖州市| 综艺| 茶陵县| 南汇区| 清水河县| 镇雄县| 弋阳县| 泾川县| 依安县| 富源县| 诸暨市| 阳东县| 米泉市| 昔阳县| 宜都市| 清水县| 嘉义县| 博罗县| 昌都县| 黔东| 鲜城| 汽车| 卓尼县| 临颍县|