为gmock自动生成模拟类

时间:2012-02-13 07:01:24

标签: c++ unit-testing visual-studio-2008 googlemock

我正在使用 gmock 进行单元测试C ++代码。我没有使用 gtest框架。我正在使用visual studio 2008的内置测试框架。

现在我的问题是我必须手动将真实类的模拟类写入单元测试。例如,如果我有一个包含5个函数的A类,那么我必须编写带有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));
};

2 个答案:

答案 0 :(得分:19)

有一个与google模拟项目捆绑在一起的工具可以帮助您完成此操作。但是我认为该工具需要安装python,我不知道它在Windows环境中的工作情况。我还发现生成的文件有时需要一些调整才能完美运行。

以下是docs

中的信息
  

提示:即使这对你来说太多了,你也会找到   Google Mock的脚本/生成器/目录中的gmock_gen.py工具   (由cppclean项目提供)很有用。这个命令行工具   要求您安装Python 2.4。你给它一个C ++文件   以及在其中定义的抽象类的名称,它将打印出来   为您定义模拟类。由于C ++的复杂性   语言,这个脚本可能并不总是有效,但它可以非常方便   什么时候呢。有关更多详细信息,请阅读用户文档。

这是new localization of this script

答案 1 :(得分:3)

免责声明:我曾经在Typemock工作

您是否考虑使用其他工具?
Typemock有一个名为Isolator++的工具,不需要你编写“模拟类”。

TEST_F(IsolatorTests, SomeTest) 
{
      AClass* fakeclass = FAKE(AClass);
      WHEN_CALLED(fakeclass->AFunction()).Return(10);

      ASSERT_EQ(10, fakeclass.AFunction()); 
}

您可以在此about page

了解有关此内容的更多信息