ユニットテストが行われる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
スタブ「機能」とは何ですか?スタブは、完了していないメソッドのプレースホルダです。メソッドの実装方法に関するコメントが含まれ、ソースファイルがコンパイルされるようにダミーの戻り値が含まれています。 –
@HunterMcMillen - そうではありません。スタブはテストの文脈で特定の意味を持ちます。テストの観点から「スタブ」と「モック」の両方を説明する[ここでは素敵な記事](http://martinfowler.com/articles/mocksArentStubs.html) – dbn
これは[Seeking code stub generator(ヘッダーファイルから)](http://stackoverflow.com/q/2020568/1309332)と重複している可能性があります。 – dbn