2016-04-13 25 views
-1

静的なグローバル変数をテスト関数に使用する方法はありますか?またはその回避策ですか?このような状況の例以下はCppUTestのグローバル変数を模倣する方法はありますか?

static zsock_t *publish_logs = NULL; 

int btak_log_message_reactor(zloop_t *loop, zsock_t *reader, void *arg) { 
    struct btak_log_message *message; 
    size_t message_size; 

    if(zsock_recv(reader, "b", &message, &message_size) == 0) { 
     push_log_message(message); 
     if(publish_logs) 
      publish_log_message(message, publish_logs); 
     free(message); 
    } 

    return 0; 
} 
+0

私はCppUTestに精通していませんが、必要に応じてアクセッサを作成してモック変数を返すことはできません。 – danielfranca

+0

はい、私はそれについて考えました。しかし、このようにして私は実際に使用できるコードを生成しないので、グローバル変数だけを模擬することが可能かどうか疑問に思っていました。 – Magnar

答えて

1

は、私たちはしばしば、リンカを忘れます。異なるオブジェクトファイルを使用してインタフェースをモックできます。このmock-objには、あなたのグローバルな定義が含まれています。

しかし、現在の単体テストフレームワークはコードレベルでしか動かないので、テストビルドにモックオブジェクトを追加するには、build-fuが必要になります。

関連する問題