離弦之Ray

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

          問:如何對私有方法進行單元測試?

          答:重點在于,你不應該有任何方法是從一開始設計出來就是private的,因為你的每段程序都應該在單元測試的驅動之下產生,而測試是不可能驅動出 來一個private方法的。那么private方法從哪里來?只能從重構而來。所以答案是:private方法是不需要測試的,因為它是重構的產物,而 重構是不改變程序可觀察之行為的。既然行為不改變,測試自然也不需要有任何改變,所以不需要針對private方法建立任何新的測試。

          問:但是,如果private方法確實出現問題了怎么辦?如果確實希望用測試來弄清一個private方法里面到底發生了什么,該怎么辦?

          答:如果一個private方法復雜到你不能一眼看清它,那它就太復雜了,你應該把它重構成為一個獨立的class,然后針對這個class來建立單元測試。

           

           

           

          posted on 2008-04-16 20:54 離弦之ray的技術天空 閱讀(2027) 評論(3)  編輯  收藏

          Feedback

          # re: [轉]如何對private方法進行單元測試[未登錄] 2008-09-04 16:20 xan
          可以通過反射設置方法能見來測試private方法  回復  更多評論
            

          # re: [轉]如何對private方法進行單元測試 2008-10-10 16:39 畢竟紅塵
          我反正都是通過main來測試private函數...
          這個解答得很微妙
          因為private都是重構的產物,所以private的代碼是不需要測試的?
          那么是不是還應該證明,“重構的產物是不需要測試的”?
          解答里面,似乎是想通過“重構是可以不改變程序之行為”來證明“,“重構的產物是不需要測試的”?”

          但是,緊接著是不是應該證明下“重構不改變程序之行為,所以不改變程序行為的代碼,是不需要測試的”?

          繞啊...
            回復  更多評論
            

          # re: [轉]如何對private方法進行單元測試 2008-10-26 00:19 離弦之ray的技術天空
          這個回答是在純理想化的情況下

          現實中嘛就……

          除了反射,還可以用MOCK的方法來測試
          即編寫一個Mock類繼承要被測試的類
          然后將對應的private方法overriding成public的繼而進行測試

            回復  更多評論
            


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


          網站導航:
           
          主站蜘蛛池模板: 修水县| 手游| 河津市| 琼海市| 金乡县| 通城县| 耿马| 璧山县| 奈曼旗| 天门市| 普宁市| 呼玛县| 洞头县| 九江县| 呼和浩特市| 秦皇岛市| 郎溪县| 深圳市| 华蓥市| 宁明县| 湖南省| 临潭县| 三台县| 北流市| 寿宁县| 上犹县| 囊谦县| 黄陵县| 新乡县| 木兰县| 九龙城区| 卢氏县| 桃园市| 汉寿县| 临泽县| 广饶县| 西盟| 清徐县| 昌乐县| 衡山县| 桃源县|