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

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

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

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

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

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

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

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

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

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


          網站導航:
           
          主站蜘蛛池模板: 溆浦县| 宜君县| 西城区| 新乡县| 万载县| 仪征市| 吴忠市| 清镇市| 安徽省| 东海县| 陵川县| 缙云县| 克山县| 高尔夫| 诸暨市| 大连市| 新乡市| 桦甸市| 新建县| 汝南县| 阜宁县| 高碑店市| 贡山| 武强县| 东莞市| 乐山市| 军事| 得荣县| 信丰县| 娄烦县| 荆门市| 基隆市| 淄博市| 镇巴县| 沂水县| 九龙县| 昭通市| 宜州市| 皮山县| 清河县| 武义县|