2011-12-27 24 views
0

これは、Bonjourを使用するネットワーク内のデバイスディスカバリライブラリのクラスデザインです。GTestを使用してテストケースを開発する必要があります.GTEstを初めて使用しています。GTestを使用したコールバックのユニットテスト

  1. クライアントプログラム

  2. コールバックは、インターバル時間と周波数 セイ間隔は200ミリ秒で、周波数が2になった後、それは後に2回のコールバックを呼び出しますと呼ばれるデバイス情報を受信するIDeviceEnumerationCallbackを実装する必要があります200ms。

私はそれがすぐに適切かどうか使用して、デバイスが列挙されているかどうかを知るためにcallback.Howで返されます-1を言ったり、結果1.But戻ります)EnumerateDeviceためのユニットテストを(開発

class IDeviceEnumerationCallback 
{ 
public: 
/* This callback is called when Device are Enumerated and is regsitered in EnumerateWiFiDevice method */ 

    virtual void onDeviceDiscovered(DeviceInfo* pDeviceInfo,unsigned short nNoOfDevice,void* pContext) = 0; 
}; 

IDeviceDiscovery 
{ 
    virtual int InitialiseDeviceDiscovery(IDeviceEnumerationCallback*) = 0; 
    virtual void UnInitialiseDeviceDiscovery() = 0; 
    virtual int EnumerateDevice() = 0; 
    virtual void SetDiscoveryInterval(unsigned long nDiscoveryInterval); 
    virtual void SetDiscoveryFrequency(unsigned short nFrequency); 
    virtual unsigned long GettDiscoveryInterval(); 
    virtual unsigned short GettDiscoveryFrequency(); 


} 

class CDeviceDiscovery : public IDeviceDiscovery 
{ 
// implemenation 
} 
GTest。 私はGTest Mock Hereが必要ですか?

答えて

1

これにはGmockを使用できます。良い説明は、このページに記載されています: http://code.google.com/p/googlemock/wiki/ForDummies

あなたはIDeviceEnumerationCallback

#include <gmock/gmock.h> 
class MockIDeviceEnumerationCallback : public IDeviceEnumerationCallback 
{ 
public: 
    MOCK_METHOD3(onDeviceDiscovered, void(DeviceInfo* pDeviceInfo,unsigned short nNoOfDevice,void* pContext)); 
}; 

を模擬し、

MockIDeviceEnumerationCallback mock; 
EXPECT_CALL(mock, onDeviceDiscovered(_, _, _)) 
    .WillOnce(Return(1)); 
を使用して関数への呼び出しを期待します
関連する問題