2017-04-03 21 views
0

私はcpputesを使用して、cコードの単体テストを実行しています。単体テスト環境内の静的関数の偽装/偽装

テスト中の私のソースコードでは、ユニットテスト環境から呼び出されたときに関数の "偽の"バージョンにリダイレクトされる静的関数があります。テスト中の

ソースコード:

私はこのようなsomethigを持っている、のは、言ってみましょう

void my_main() 
{ 
    read(int8 address); 
} 

となります。

static int8 read(int8 address) 
    { 
     return something; 
    } 

単体テスト環境:

TEST(MY_TESTS, READ) 
{ 
    my_main(); 
} 

ユニットテスト環境内my_main()を呼び出すとき、私は

読み取り(INT8アドレス)のコールをリダイレクトしたいと思います 〜:

int8 fake_read(int8 address) 
{ 
    //do_something 
} 

ここに正しい方法はありますか?私は依存関係の注入よりも関数ポインタでそれを試しましたが、うまくいきません。

+0

一般的に、ファンクションコールまたは任意の機能性を疑似するために、モック関数は別のファイルに書き込まれ、メインドライバプログラムからインクルードされて呼び出されます。 私は__cpputest__がどのように動作するのか気づいていませんが、ランタイム中に環境変数を設定すると、そのenv varをメイン関数で読み取ることができ、呼び出される関数、つまり模擬関数または実数関数。 – Gaurav

答えて

0

リンカを使用して、これを行うことができます:スタティック関数の実際の生産コードとモック実装の2つのソースファイルを作成します。

テストの場合は、2番目のテストをリンクします。あなたのアプリケーションを実行するためのものです。