2011-08-26 8 views
7

最近、1つのレガシープログラムにユニットテストを追加する必要があります。多くのマクロを持つプログラムのユニットテスト

は、しかし、それには、現在、一般的なプログラムのパスはユニットテストでカバーされている

#ifdef CONFIG_XXX 
do xxx 
#endif 

#ifdef CONFIG_YYY 
do yyy 
#endif 

のように、マクロがたくさんあります。だから、私は内部マクロ部分(異なるプログラムのパス)をカバーするためのテストを追加したい。

私はいつも特定のマクロで自分のプログラムをコンパイルして実行する必要があり、プログラムパスをカバーしコンパイル時間を短縮するマクロの構成を設計するのは本当に簡単ではないようです。

ハードウェア関連のコードをすべてarchフォルダに移動する予定です。マクロはcファイルからmakefileに移動されましたが、UTを実行するたびに特定のマクロをコンパイルする必要があります。

誰もこの問題について以前に経験したことはありますか?

ご意見ありがとうございます。

+1

'if(config.XXX)'で各マクロを置き換えることを検討できますか?そうすれば、再コンパイルする必要がなくなります。 –

+0

マクロとif文の違いから私はできません。 –

+0

私が言っているのは、あなたのコードを 'config'構造体を入力とするようにリファクタリングすることです。この構造体には、それぞれがマクロの1つに対応する一連のフラグ変数を持つことができます。 –

答えて

2

私はgcc -Dを使って多くのバージョンのバイナリプログラムを生成できると思います。 コンパイルして、それを実行するスクリプトで実行してください:)

+0

質問:「毎回特定のマクロを使って自分のプログラムをコンパイルして実行する必要があるようだ」とgcc -Dを使ってこれを実行するだけです。 –

関連する問題