問:如何對私有方法進(jìn)行單元測試?
答:重點(diǎn)在于,你不應(yīng)該有任何方法是從一開始設(shè)計(jì)出來就是private的,因?yàn)槟愕拿慷纬绦蚨紤?yīng)該在單元測試的驅(qū)動(dòng)之下產(chǎn)生,而測試是不可能驅(qū)動(dòng)出
來一個(gè)private方法的。那么private方法從哪里來?只能從重構(gòu)而來。所以答案是:private方法是不需要測試的,因?yàn)樗侵貥?gòu)的產(chǎn)物,而
重構(gòu)是不改變程序可觀察之行為的。既然行為不改變,測試自然也不需要有任何改變,所以不需要針對private方法建立任何新的測試。
問:但是,如果private方法確實(shí)出現(xiàn)問題了怎么辦?如果確實(shí)希望用測試來弄清一個(gè)private方法里面到底發(fā)生了什么,該怎么辦?
答:如果一個(gè)private方法復(fù)雜到你不能一眼看清它,那它就太復(fù)雜了,你應(yīng)該把它重構(gòu)成為一個(gè)獨(dú)立的class,然后針對這個(gè)class來建立單元測試。