在C+中创建存根功能+; < >我有一段C++代码,它的单元测试是要完成的。e、 g //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 }

在C+中创建存根功能+; < >我有一段C++代码,它的单元测试是要完成的。e、 g //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 },c++,C++,四个文件,即。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; } 现在,我必须为LowerLaye

四个文件,即。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;
}
现在,我必须为LowerLayer类及其函数创建一个存根功能。 当从function_totest调用function_lowerlayer时,应使用testcode应用程序的控制标志调用存根函数和实函数(一次一个)

请提供一些设计此要求的建议。 谢谢
Ankur

试着在测试中使用GoogleMock。

灵感来源于jMock、EasyMock和Hamcrest,采用C++设计 细节,谷歌C++模拟框架(或谷歌模拟) 短)是一个用于编写和使用C++模拟类的库。谷歌 模拟:

允许您使用简单宏轻松创建模拟类,支持 丰富的匹配器和操作集,处理无序、部分 有序的或完全有序的期望值可由用户扩展, 并且可以在Linux、Mac OS X、Windows、Windows Mobile、minGW和 塞班

尝试使用cpp存根

//适用于linux和windows
#包括
#包括“stub.h”
使用名称空间std;
int foo(int a)
{   

coutWhat是存根“功能”?存根是尚未完成的方法的占位符,它通常包含有关如何实现该方法的注释,并包含一个伪返回值,以便源文件能够编译。@HunterMcMillen-这不太正确;存根在测试上下文中有特定的含义。解释
stubs
mocks
从测试的角度来看。这可能是一个副本。@dbw这篇文章已经10个月了……我尝试使用Mockpp框架,并为此投入了一些时间。但这对我没有帮助。我不确定GoogleMock。除了使用框架之外,还有其他解决方案吗。好吧,你可以编写自己的Mock,但使用框架太容易了出于某种原因,我认为GoogleMock只适用于虚拟类或模板类。这不是真的吗?
//for linux and windows
#include<iostream>
#include "stub.h"
using namespace std;
int foo(int a)
{   
    cout<<"I am foo"<<endl;
    return 0;
}
int foo_stub(int a)
{   
    cout<<"I am foo_stub"<<endl;
    return 0;
}


int main()
{
    Stub stub;
    stub.set(foo, foo_stub);
    foo(1);
    return 0;
}