2017-09-24 9 views
0

とユニットテストはI 2つのモジュールとCプロジェクト有するC機能 - AとB B私はこれらをテストするために団結を使用A.モック結束

int B_func() { 
    if (1 == A_func()) {return 1;} 
    return 2; 
} 

から関数を呼び出す機能を有しますモジュール。

TEST(B, test_b) { 
    TEST_ASSERT_EQUAL(1, B_func()) 
} 

モジュールBをテストすると、A_funcをモックして実装を使用し、戻り値を変更したいと考えています。モジュールBのソースコードを変更せずにこれを行う方法はありますか?

+0

問題は表示されません。この関数はBでは実装されていません。なぜそうではありませんか? (なぜ偽をしたら、単に 'A_func'を変更するのですか) – Olaf

+0

私はA_funcを変更したくありません。すでにプロジェクトの一部であり、リンクされているからです。A_funcの元の実装を無視するようにB_funcに伝えたいBのユニットテストでA_funcを模倣する... –

答えて

1

私はMimickを使用して終了しました。 https://github.com/diacritic/Mimick

少し面倒です。プロジェクトを共有オブジェクトとしてコンパイルしてテストにリンクする必要があったので、関数がGOTにあるため、理想的ではありませんでしたが、問題は解決しました。

関連する問題