为gmock自动生成模拟类

Automatic generation of mock classes for gmock

本文关键字:模拟类 自动生成 gmock      更新时间:2023-10-16

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

现在我的问题是,我必须手动为真正的类到单元测试编写模拟类。例如,如果我有一个包含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));
};

google mock项目捆绑了一个工具,可以帮助您完成这项工作。然而,我认为该工具需要安装python,我不知道它在windows环境中的工作效果如何。我还发现,生成的文件有时需要一点调整才能完美工作。

以下是来自文档的信息:

小贴士:如果这对你来说工作量太大,你会发现GoogleMock脚本/生成器/目录中的gmock_gen.py工具(由cppclean项目提供)有用。此命令行工具需要安装Python 2.4。你给它一个C++文件以及其中定义的抽象类的名称,它将打印为您定义mock类。由于C的复杂性++语言,这个脚本可能并不总是有效的,但它可以非常方便当它发生时。有关更多详细信息,请阅读用户文档。

这是这个脚本的新本地化。

免责声明:我曾在Typemock工作

你考虑过使用另一种工具吗
Typemock有一个名为Isolator++的工具,它不需要您编写"mocking类"。

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

您可以在关于的页面上了解更多信息