4

cmockaライブラリを使用して、組み込みの c コードをテストしています。ドキュメントによると、__wrap_プレフィックスを使用して関数をモックするので、単体テストを分離できます。ただし、これを行うと、関数へのすべての呼び出しは永遠にラップされた関数に移動します。特定の状況で実際の機能を再度有効にして、テストしたり、他の機能が使用できるようにしたりするにはどうすればよいですか? 唯一の方法は、グローバルフィールドをスイッチとして使用して実際の関数を次のように呼び出すことです。

int __wrap_my_function(void) {
    if (g_disable_wrap_my_function) {
        return __real_my_function();
    }

    // ... do mock stuff
}

それは正しい方法ですか?

4

2 に答える 2

5

-wrap コマンド ライン オプションを指定せずにコンパイルするだけです。

または、次の定義を使用します。

#include <cmocka.h>
#ifdef UNIT_TESTING
#define strdup test_strdup
#endif

モック関数 test_strdup を追加します。これで、この関数を使用してテストできます。

于 2015-04-20T06:54:50.757 に答える
1

私は自分の質問で提案したことを正確に実行することになりました。ラップされた関数をチェックインするグローバル変数を使用して、実行時にモックを有効および無効にしました。

于 2015-08-28T20:43:23.247 に答える