模拟googlemock

时间:2016-02-25 10:26:46

标签: c++ file mocking googletest googlemock

我刚刚开始使用googlemock进行C ++项目的模拟。在我的例子中,我要测试的类会观察一个写入的文件,并且只要编写了少量新数据,它就会开始做一些工作。

我需要的是一个用于写入文件的进程的模拟类。据我所知,我需要以(对于googlemock)形式完全实现这种“写入文件”功能,这是一个从中派生出模拟类的虚拟类?模拟包装器最终用于测试和评估目的,对吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

模拟术语中的模拟是用于验证被测代码是否对其执行某些操作的对象。

您描述的不是模拟,而是在测试操作下触发代码的实用程序类。

当您的班级检测到它所观察的文件被写入时,该怎么办?例如,如果它执行对另一个对象的调用,那么您可以使用模拟对象来检查是否使用正确的参数调用它,例如写入文件的新大量数据。

答案 1 :(得分:1)

我假设你"观察者"的对象课程通知 最小数量的数据已被一个对象写入 "写作者"类。在这种情况下,您需要实现一个摘要 代表你" writter"的接口的类。上课,并且有 你的真实"写作者" class继承自它并覆盖其虚函数。 还有,你的模拟"写作"类实现继承自此接口和 并使用MOCK_METHODn创建模拟实现。

然后,让你的观察者"班级接收来自" writter"的通知宾语 使用指向抽象类的指针。这样,您就可以使用依赖项 通过创建模拟,在测试阶段切换实现 " writter"对象并将其地址传递给"观察者"对象(而不是真实"写作者的地址" 对象)并在模拟对象上使用EXPECT_CALL设置测试用例。

这是我能给出的最好的建议,因为你没有向我们提供你班级的详细描述。

编辑:

关于你的真实"写作者的实施" class:你不必立即创建它,你现在可以使用mock类来测试"观察者"的行为。类,并留待实施以供日后使用。当然,您必须最终实现它,因为它必须在生产代码中使用。