2011-08-26 20 views
7

最近,我需要爲一個傳統程序添加單元測試。有很多宏的程序的單元測試

但在裏面,有很多的宏,像

#ifdef CONFIG_XXX 
do xxx 
#endif 

#ifdef CONFIG_YYY 
do yyy 
#endif 

目前,通用程序路徑是由單元測試覆蓋。所以,我想添加測試來覆蓋內部的宏部件(不同的程序路徑)。

似乎我每次都需要編譯和運行我的程序,並且如何設計宏的組合來覆蓋程序路徑並減少編譯時間並非易事。因此,我打算將所有與硬件相關的代碼移動到arch文件夾中,現在,宏已從c文件移動到makefile,但每次仍需要編譯某些宏以獲取UT工作。

有沒有人有過這方面的經驗?

感謝您的意見。

+1

你能否考慮用'if(config.XXX)'替換每個宏?這樣,你就不需要重新編譯了。 –

+0

我不能,因爲宏和if語句的區別。 –

+0

我的意思是,重構你的代碼以'config'結構作爲輸入。這個結構可以有一組標誌變量,每一個都對應於你的一個宏。 –

回答

2

我想你可以使用gcc -D來生成許多版本的二進制程序。 使用腳本編譯並運行它們:)

+0

在問題:「似乎我需要每次編譯和運行我的程序與某些宏」,gcc -D是用​​來做到這一點。 –