我正在研究一個已存在10多年的Visual C++項目。我們剛剛決定開始添加單元測試。 Out小組正在討論兩種基本的方法,以允許單元測試針對給定的類進行編寫。要麼我們可以派生一個類並在派生類中添加我們需要的單元測試,或者我們可以創建一個基類並將我們需要的僅移動到基類,從中派生出我們現有的類。將單元測試添加到現有的Visual C++項目
選項1:
類CExistingClass
類CDerivedClass:CExistingClass
選項2:
類CBaseClass
類CExistingClass:CBaseClass
選項1的優點是,它不需要任何對現有類的更改 - 單元測試所需的任何內容都將嚴格添加到單元類項目中,並且不會向我們現有的庫添加任何內容。不足之處在於,當它嘗試鏈接時,這是一場完全災難。爲了讓它適用於我們的一個庫,我們必須添加一個單獨的後期構建步驟來執行庫的靜態鏈接版本以及將各個OBJ文件添加到其他依賴項。
選項2的優點是鏈接不是一個問題 - 您只能拾取基類並測試其中的項目。不足之處在於這意味着修改現有的代碼,並且通常會降低軟件的可讀性(在10年以上的版本中,這已經太低了)。它也打開了多重繼承問題的大門,我很想避免這些問題。
我一直無法找到其他任何人通過這個決策過程的討論,並且有興趣看看其他地方已經決定了什麼,並且獲得任何經驗教訓,或者更好,然後聽到一個選項3,考慮。