2011-03-09 119 views
0

我正在使用CPPUnit對c代碼進行一些單元測試。CPPUnit訪問定義在c文件中

在測試代碼中有一些定義在c文件中,而不是在h文件中。所以他們不能從代碼中的其他地方訪問。許多定義用於設置數組的大小。

當我進行單元測試時,我想盡可能地使它們動態化,這意味着當定義在最終發佈之前被更改時它們仍然可以工作。我已經做了一些循環和東西來通過使用數組的函數,以便我測試多次,因爲數組中有條目等等。但是直到現在,我在我的單元測試代碼中使用了一個定義的副本。因此,如果在代碼中更改了定義以進行測試,那麼它們在單元測試代碼中不會更改。

所以我的主要問題是,如果有一些技巧只用於單元測試的目的,以某種方式使定義全局或任何東西,而不改變原始源代碼只是爲了適應單元測試的使用。也許編譯器設置? (我正在使用visual studio 2008)。

+1

簡單包括C文件怎麼樣? '#include「myfile.c」'是否有效? – 2011-03-09 09:42:30

+0

此外,我不確定VS,但在Clang和GCC中,您可以使用'-D = '編譯器標誌。 – 2011-03-09 09:47:09

+0

爲什麼不正確編寫代碼並將它們所屬的定義放在頭文件中? – 2011-03-09 10:05:53

回答

0

不,你不能在.c文件中創建一個#define「全局」,以便它適用於其他C文件,除了可以在不更改源的情況下生成全局靜態函數外。做到這一點的方法是將源代碼更改爲將它們所屬的#define定位到定義接口的頭文件中。

===編輯===

信貸拉德克·S代表的#include荷蘭國際集團.c文件的想法。這具有有限的適用性,但應該適用於該文件中函數的單元測試,前提是在創建測試可執行文件時未編譯原始文件。