我有一块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
}
这四个文件即: 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应用程序的控制标志来调用存根函数和实函数(一次一个)。
请提供一些建议来设计此要求。 谢谢, Ankur
存根“功能”是什么?存根是一个尚未完成的方法的占位符,它通常包含有关如何实现该方法的注释,并且包含一个虚拟返回值,以便源文件将被编译。 – 2012-02-11 07:18:31
@HunterMcMillen - 这不太正确;存根在测试环境中具有特定的含义。 [这是一篇不错的文章](http://martinfowler.com/articles/mocksArentStubs.html)从测试的角度解释'stubs'和'mocks'。 – dbn 2012-12-20 23:02:25
这可能是[寻找代码存根生成器(从头文件)](http://stackoverflow.com/q/2020568/1309332)的副本。 – dbn 2012-12-20 23:04:29