在學(xué)習(xí)完單元測試(boost unit test)后,嘗試在工程中加入單元測試,走了一些彎路,特別處理功能代碼和測試代碼的關(guān)系。目前找到了一種較好的解決方法。本方法只在VC2005使用過,在其它集成環(huán)境沒有使用經(jīng)驗(yàn),但應(yīng)該類似吧。
具體方法是將整個(gè)項(xiàng)目分成三部分:靜態(tài)庫工程、目標(biāo)工程和測試工程。靜態(tài)庫工程是一個(gè)靜態(tài)庫工程,它包含整個(gè)項(xiàng)目絕大部分功能代碼。目標(biāo)工程是在靜態(tài)庫工程上封裝一層,從而產(chǎn)生最終需要的dll或exe工程,如提供main函數(shù),然后轉(zhuǎn)調(diào)靜態(tài)庫工程的函數(shù)。測試工程包含單元測試代碼,該工程鏈接靜態(tài)庫,最終產(chǎn)生單元測試程序。目標(biāo)工程和測試工程倚賴靜態(tài)庫工程。此外可以利用項(xiàng)目的build-event,即目標(biāo)工程編譯前,先運(yùn)行但單元測試程序。
在我之前的方法中,將所有代碼放入一個(gè)工程,采用宏UNIT_TEST來區(qū)分測試代碼,這個(gè)方法有很多缺點(diǎn),如代碼編譯兩次,不容易添加build-event等等。
大家如果有其它好的方法,一起交流討論。