我正在使用 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));
};
答案 0 :(得分:19)
有一个与google模拟项目捆绑在一起的工具可以帮助您完成此操作。但是我认为该工具需要安装python,我不知道它在Windows环境中的工作情况。我还发现生成的文件有时需要一些调整才能完美运行。
以下是docs:
中的信息提示:即使这对你来说太多了,你也会找到 Google Mock的脚本/生成器/目录中的gmock_gen.py工具 (由cppclean项目提供)很有用。这个命令行工具 要求您安装Python 2.4。你给它一个C ++文件 以及在其中定义的抽象类的名称,它将打印出来 为您定义模拟类。由于C ++的复杂性 语言,这个脚本可能并不总是有效,但它可以非常方便 什么时候呢。有关更多详细信息,请阅读用户文档。
答案 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
了解有关此内容的更多信息