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