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