2016-03-18 51 views
1

在我看來,每個C++類代碼文件都被編譯到它自己的obj文件中。 其他頭文件看起來像是「控制反轉」的接口要求。可以單元測試一個C++ obj文件嗎?

那麼,一個c + + obj文件可以鏈接到單元測試,並測試使用這些頭沒有其他OBJ文件項目嘲笑?

回答

0

從理論上來說,是的,但這將是一個重大的痛苦。在創建目標文件時,您承諾可以使生成的代碼存在某個特定的環境。嘗試在沒有該環境的情況下使用它將很困難;您需要至少提供足夠的內容才能滿足所有鏈接時間依賴關係。

這樣做對於每個目標文件來說都是很多工作,然後將更多的工作添加到整個程序中。

順便說一句,每個類都有它自己的目標文件是不對的。對象文件對應於翻譯單元,並且包含變量,函數,類等的混合,並且如果啓用鏈接時間代碼生成,則它可能甚至不是機器代碼,而是一些中間表示。

+0

我明白了。我很高興看起來有可能,但似乎沒有人做過這麼大的模擬容器。我想可以使用asm文件來代替obj文件。然後將地圖文件改爲一個完整的默認構造函數。我想我正在嘗試看看自動嘲諷在C++中是否像使用c#這樣的反射語言一樣容易。 –

1

聲明我在Typemock工作。

使用Typemock Isolator ++,您可以通過將您的dll或exe鏈接到單元測試項目,直接從您的生產代碼中嘲笑幾乎所有東西。你也可以使用頭文件。 我們對c#/。net項目有類似的環境,而且兩者都很容易使用。

look

相關問題