13

我正在使用gmock对C++ 代码进行单元测试。我没有使用gtest 框架。我正在使用 Visual Studio 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));
};
4

2 回答 2

20

谷歌模拟项目捆绑了一个工具,可以帮助你做到这一点。但是我认为该工具需要安装 python,我不知道它在 windows 环境中的效果如何。我还发现生成的文件有时需要稍作调整才能完美运行。

这是来自文档的信息:

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

这是此脚本的新本地化

于 2012-02-13T07:45:34.963 回答
3

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

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

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

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

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

于 2012-02-13T07:22:23.577 回答