2011-03-09 7 views
0

私はCPPUnitを使用してCコードについていくつかのユニットテストを行っています。CPPUnitアクセスはCファイルで定義されています

テストするコードには、hファイルではなくcファイルにいくつかの定義があります。だから彼らはコードの他の場所からアクセスすることはできません。多くの定義は、配列のサイズを設定するために使用されます。

私が単体テストを行うときに、最終リリース前に定義が変更されたときでも動作するように、できるだけダイナミックにしたいと思います。配列を使用して関数を実行するためにいくつかのループやものを作ったので、配列などのエントリが何回もあるかどうかをテストします。しかし今まではユニットテストコードで定義のコピーを使用しています。したがって、テストするコードで定義が変更された場合、ユニットテストコードで変更されません。

私の主な質問は、単体テストの目的にだけ使用するいくつかのトリックが何らかの理由でグローバルなものか何かを作ることであるならば、単体テストの使用に合わせて元のソースコードを変更することなくです。多分コンパイラの設定? (私はVisual Studio 2008を使用しています)。

+1

Cファイルを含めるのはどうですか? '#include" myfile.c "'それは動作しますか? –

+0

また、私はVSについてはわかりませんが、ClangとGCCでは '-D = 'コンパイラフラグを使うことができます。 –

+0

コードを正しく書いて、ヘッダファイルにどこに属しているのか定義してみませんか? –

答えて

0

いいえ、.cファイル内に#defineを "グローバル"にして、他のCファイルに適用することはできません。ソースを変更せずにスタティック関数をグローバルにすることができます。これを行う方法は、ソースを変更して、それらが属しているものをインターフェイスを定義するヘッダファイルに入れるようにすることです。

=== .cファイルをINGの#includeのアイデアのためのラデク・Sに編集===

クレジット。これは適用範囲が限られていますが、テスト実行ファイルの作成時に元のファイルがコンパイルされていなければ、そのファイル内の関数の単体テストで動作するはずです。

関連する問題