2011-02-07 11 views
7

throw()指定子を持つ仮想メソッドをGoogleの模擬しようとしています。元の関数は次のようになります。throw()指定子を使用したメソッドの模擬処理

virtual ReturnValue FunctionName() const throw(); 

私はコンパイラエラーを取得しています:

MOCK_CONST_METHOD0(FunctionName, ReturnValue()); 
MOCK_CONST_METHOD0(FunctionName, ReturnValue() throw()); 
MOCK_CONST_METHOD0(FunctionName, ReturnValue()) throw(); // Gives a different error entirely. 

私はちょうど約あらゆる試してみた:ここ

looser throw specifier for 'virtual FunctionSignature'は、私がこれまで試してみましたコードです私が考えることができる他の組み合わせが、これらは最も論理的に見えるものです。 throw()指定子を使ってGoogleがメソッドをmockingする方法を教えてください。マクロGMOCK_METHOD0_ "内部"、および使用を使用する必要があると思い、私が言うことができるものから、

+0

Googleのコーディングスタイルは完全に例外を禁止していることに私には思えます。 –

+0

@Alexandre C:Googleのハウススタイルで書かれていないコードをサポートするようにGoogleMockが設計されていますか? –

+1

@スティーブ:私の推測はノー(まだ)ですが、私は推測が好きではありません。 –

答えて

1

私の解決策:仮想関数の実装を作成します。仮想関数の実装は、モックされたメソッドを経由するだけです。

MOCK_CONST_METHOD0(MockFunctionName, ReturnValue()); 
virtual ReturnValue FunctionName() const throw() 
{ 
    return MockFunctionName(); 
} 

次に、Expect_Callを記述するか、そのメソッドに何かを行う必要がある場合は、MockFunctionNameを参照してください。

+0

今、EXPECT_THROWについて – lolsborn

1

Googleモックは例外仕様をサポートしていません。その理由は、例外仕様はほとんどが誤ったものだと考えており、実際には例外として使用することは避けてください。 例外を広範囲に使用しています。

のトラブル

virtual ReturnValue FunctionName() const throw(); 

してから使用してください:解決策のようにコードを書き換えることになる

MOCK_CONST_METHOD0(FunctionName, ReturnValue()); 
関連する問題