我正在使用gmock进行单元测试C++代码。我没有使用gtest框架。我使用的是visual 2008的内置测试框架。
现在,我的问题是,我必须手动编写一个真正的类到单元测试的模拟类。例如,如果我有一个有5个函数的类,那么我必须用5个函数编写MockAClass。这些类是否可以自动生成。
class AClass
{
public:
virtual int AFunction()
{
return 5;
}
virtual int AFunctionWithArguments(int x)
{
return x;
}
class MockAClass : public AClass
{
public:
MOCK_METHOD0(AFucntion, int());
MOCK_METHOD1(AFunctionWithArgument, int(int x));
};
发布于 2012-02-13 07:45:34
有一个与谷歌模拟项目捆绑在一起的工具可以帮助你做到这一点。但是,我认为这个工具需要安装python,而且我不知道它在windows环境中的工作效果如何。我还发现,生成的文件有时需要稍加调整才能完美地工作。
这是来自文档的信息
提示:如果这对您来说是太多的工作,您会发现Google的脚本/生成器/目录中的gmock_gen.py工具( 环磷酰胺项目提供的)很有用。这个命令行工具需要安装Python2.4。给它一个C++文件和其中定义的抽象类的名称,它将为您打印模拟类的定义。由于C++语言的复杂性,这个脚本可能并不总是工作,但当它运行时会非常方便。有关详细信息,请阅读用户文档。
这是此脚本的新本地化。
发布于 2012-02-13 07:22:23
免责声明:我曾在Typemock工作过
你考虑过使用另一个工具吗?
Typemock有一个名为Isolator++的工具,它不需要您编写“模拟类”。
TEST_F(IsolatorTests, SomeTest)
{
AClass* fakeclass = FAKE(AClass);
WHEN_CALLED(fakeclass->AFunction()).Return(10);
ASSERT_EQ(10, fakeclass.AFunction());
}
您可以在这个关于页上了解更多有关它的信息。
https://stackoverflow.com/questions/9256664
复制相似问题