ここで質問するのは初めてなので、質問を改善できるかどうか教えてください..
ソース ファイルを CMock によって生成されたソース ファイルのモック バージョンに置き換える必要がある単体テストをクリーンにビルドする方法についてのガイダンスを探しています。これが必要になるのは、CMock では、モックを使用する単体テスト コードを元のソースではなくモック ソースにリンクする必要があるためです。
たとえば、テスト ソース ファイル test.c で foo() を呼び出す関数 test_me() をテストしている場合、foo() をモックするには、コンパイルする必要があります。test_test_me: test_me.c, Mockfoo.c, and test.c.
test_me() は通常、次のようにコンパイルされます。test_me: test_me.c and foo.c
Mockfoo.c は、foo.h を使用して CMock が提供する Ruby スクリプトを使用して生成されます。
ご覧のとおり、テスト プログラムを作成するには、 をfoo.c
に置き換える必要があります。Mockfoo.c は、test_test_me が元の foo 呼び出しではなく、モックされた foo 呼び出しにリンクできるようにするために必要です。依存関係の数が増えると、ソースの置き換えが難しくなります。Mockfoo.c
test_test_me
たとえば、test_me が foo.o、bar.o、および baz.o で構成されるライブラリ libfoo.a の foo、bar、および baz を使用し、foo への呼び出しを単にモックしたい場合、ビルドする必要があります。コンパイル ユニット Mockfoo.o、bar.o、および baz.o を含む libfoo.a をtest.o
、モック foo 呼び出しを使用する my にリンクします。これは、モックの順列 (例: Mockfoo、Mockbar、ただし baz ではない) と、異なる automake ルール、フラグなどを持つ大きなソース ツリーがある場合、さらに複雑になります。
さらに、単体テストにはモックが必要になることが多いため、モックの追加は簡単でなければなりません。
いくつかのコンテキスト:
コードがリファクタリングされた場合、または参加したばかりの大規模な C プロジェクトに新しいコードが追加された場合に、CMock/Unityを使用して単体テストを追加することに興味があります。
このプロジェクトは現在、ビルド ツールとして Automake を使用しており、そのまま使用されます。
Automakeは初めてです。私は SCons と CMock に精通しています。