1、單元測試代碼,直接寫在需要被測試的類中。
這種方法的優(yōu)點(diǎn)很明顯:由于測試代碼同被測試的方法放在一個類中,所以private等方法很容易被測試。但同時缺點(diǎn)也很明顯,該類會被寫得很復(fù)雜,估計很少會有人喜歡看這種代碼,而且萬一客戶不需要這些代碼的話,在后部署的時候,關(guān)del測試代碼,估計也是個大問題。
2、每寫一個需要被測試的類,寫當(dāng)前工程下新建一個相應(yīng)的測試類,名字可以在被測試類后面加上Test以示區(qū)別。
這種方法的優(yōu)點(diǎn)是結(jié)構(gòu)比較清晰,在比較小的工程中使用還算不錯,修改測試代碼也比較方法。缺點(diǎn)同樣是部署時刪除單元測試代碼比較麻煩,同時solution太大,有很多project時,有很大局限性。
3、solution有很多個工程時,專門新增加一些工程,用于寫單元測試,比如有一個ClassLibrary3工程,則建一個TestForClassLibrary3工程,單元測試類放到這個工程中去。
由于是以工程為單位,所以部署起來很容易,只要把這幾個工程去掉可以了,將來再要用,也只要加上可以了。不過操作相對來說比較繁瑣,沒有前2種方法便捷。
4、以上3種方法都需要在項(xiàng)目的solution中增加?xùn)|西,但如果你的項(xiàng)目不允許你增加任何測試類或工程(雖然感覺很愚蠢,但的確很多公司不允許程序員這么做),或者你根本沒有權(quán)限增加工程或文件,這3種方法將都不能使用,這時可以用第4種方法。比如你想測試ClassLibrary3工程下的Class1類,你可以先build你的項(xiàng)目,生成ClassLibrary3工程的dll文件,然后在你本地建一個測試工程,引用這個dll,可以不需要修改你的項(xiàng)目了。單元測試
這種方法的大優(yōu)點(diǎn)是不需要修改你的項(xiàng)目,不過缺點(diǎn)也很多,不夠靈活,操作復(fù)雜等。
我個人比較多用2,3,在很小的模塊中有時會用1,不過比起用1來,可能使用TestDriven.NET更加方便些。