2012-02-11 5 views
0

ユニットテストが行​​われるC++コードがあります。例えばC++でのスタブ機能の作成

//totest.h 
#include "lowerlayer.h" 
class ToTest 
{ 
    LowerLayer *ll; 
public: 
    ToTest(); 
    void function_totest(); 
}; 

//totest.cpp 
#include "totest.h" 
ToTest::ToTest() 
{ 
    ll = new LowerLayer(); 
} 
void ToTest::function_totest() 
{ 
    ll->function_lowerlayer(); 
} 

//lowerlayer.h 
class LowerLayer 
{ 
public: 
    LowerLayer(); 
    void function_lowerlayer(); 
}; 

//lowerlayer.cpp 
#include "lowerlayer.h" 
LowerLayer::LowerLayer() 
{ 
    //do nothing 
} 
void LowerLayer::function_lowerlayer() 
{ 
    //do nothing 
} 

4つのファイル、 totest.h、totest.cpp、lowerlayer.hおよびlowerlayer.cppは、実動コードファイルであり、単体テスト用には変更されていません。

は、私はクラス下層とその機能のスタブ機能を作成する必要があり、そのコードが今

//testcode.cpp 
#include "totest.h" 
int main() 
{ 
    ToTest *tt = new ToTest(); 
    tt->function_totest(); 
    //some asserts 
    return 0; 
} 

を次のようにあるテストアプリを持っています。 関数function_totestから関数function_lowerlayerが呼び出されると、testcodeアプリケーションの制御フラグを使用して、スタブ関数と実関数(1度に1つ)の両方を呼び出す必要があります。

この要件を設計するには、いくつかの提案をお願いします。 ありがとう、 Ankur

+0

スタブ「機能」とは何ですか?スタブは、完了していないメソッドのプレースホルダです。メソッドの実装方法に関するコメントが含まれ、ソースファイルがコンパイルされるようにダミーの戻り値が含まれています。 –

+0

@HunterMcMillen - そうではありません。スタブはテストの文脈で特定の意味を持ちます。テストの観点から「スタブ」と「モック」の両方を説明する[ここでは素敵な記事](http://martinfowler.com/articles/mocksArentStubs.html) – dbn

+0

これは[Seeking code stub generator(ヘッダーファイルから)](http://stackoverflow.com/q/2020568/1309332)と重複している可能性があります。 – dbn

答えて

1

テストでGoogleMockをお試しください。 http://code.google.com/p/googlemock/

jMock、EasyMock、およびHamcrestに触発され、(短い 用やGoogleモック)心の中でC++の 詳細は、Google C++モッキングフレームワークを使用して設計を書いて、C++のモッククラスを使用するためのライブラリです。モックグーグル :

は、あなたが自明簡単なマクロを使用してモッククラスを作成することができますマッチャとアクションの 豊富なセットをサポートし、順不同ハンドル、部分的に 命じ、または完全に期待を命じ、ユーザーによる拡張可能であり、 とLinux上で動作します、Mac OS X、Windows、Windows Mobile、minGW、および Symbian。

+0

私はMockppフレームワークを使って試してみました。しかしそれは私を助けませんでした。私はGoogleMockについてはわかりません。フレームワーク以外のソリューションがありますか? – user982740

+0

よく、あなたは自分のモックを書くことができますが、フレームワークを使うのはずっと簡単です。 –

+0

何らかの理由で、Google Mockは仮想クラスやテンプレートクラスでしか動作しないと思っていました。それは本当ですか? – dbn

関連する問題