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

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

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

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

          俺的看法是
          測你想測的
          測你最不放心的
          測最重要的

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

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

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 新平| 华容县| 新干县| 惠来县| 万山特区| 海南省| 黔西| 循化| 武乡县| 云南省| 东城区| 沙河市| 罗山县| 翁源县| 化隆| 牟定县| 徐汇区| 邹平县| 色达县| 荆门市| 如皋市| 建阳市| 夏津县| 凉山| 哈巴河县| 土默特右旗| 大埔县| 无棣县| 阳高县| 阿坝| 桃江县| 吉木乃县| 三穗县| 平和县| 通辽市| 双桥区| 顺义区| 东山县| 黄冈市| 安阳县| 白玉县|