隨筆-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 閱讀(2332) 評論(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)航:
           
          主站蜘蛛池模板: 嫩江县| 泾阳县| 宝丰县| 洮南市| 邯郸市| 同心县| 宣武区| 伊宁市| 蓝山县| 荥经县| 滕州市| 郓城县| 榆中县| 鹤庆县| 和静县| 屏东县| 高淳县| 哈尔滨市| 阜阳市| 广灵县| 西乌珠穆沁旗| 博客| 大城县| 余干县| 乌兰察布市| 奉节县| 通榆县| 虞城县| 衡阳市| 渝中区| 安阳县| 武定县| 老河口市| 阳原县| 红原县| 游戏| 阳曲县| 临沭县| 同德县| 黑龙江省| 嵊泗县|