0

CPPUnit を使用して C コードの単体テストを行っています。

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

単体テストを行うときは、最終リリースの前に定義が変更されても機能するように、可能な限り動的にしたいと考えています。配列を使用して関数を通過するためのループやものをいくつか作成したので、配列などにエントリがあるのと同じ回数テストします。しかし、今までは単体テスト コードで定義のコピーを使用していました。したがって、テストするコードで定義が変更されても、単体テスト コードでは変更されません。

したがって、私の主な質問は、単体テストの使用に合わせて元のソースコードを変更せずに、何らかの方法で定義をグローバルまたは何かにするために、単体テストの目的だけに使用するトリックがあるかどうかです。多分コンパイラの設定?(私はビジュアルスタジオ2008を使用しています)。

4

1 に答える 1

0

いいえ、#defineソースを変更せずに静的関数をグローバルにすることができないのと同様に、.c ファイル内の を「グローバル」にして、他の C ファイルに適用することはできません。これを行う方法は、ソースを変更して、#defineインターフェースを定義するヘッダー ファイル内のそれらが属する場所にそれらの を配置することです。

=== 編集 ===

#include.c ファイルを ing するアイデアについては、Radek S に感謝します。これには適用範囲が限られていますが、テスト実行可能ファイルの作成時に元のファイルがコンパイルされていなければ、その 1 つのファイル内の関数の単体テストには機能するはずです。

于 2011-03-09T10:09:42.893 に答える