我刚开始在C++项目中使用googlemock进行嘲弄。在我的例子中,要测试的类观察一个被写入的文件,每当编写了最小数量的新数据时,它就开始执行一些工作。
我需要的是一个模拟类,用于将进程写入文件。就我所理解的事情而言,我需要以派生模拟类的虚拟类的形式(对于googlemock)完全实现这个“写文件”功能?模拟包装器最终用于测试和评估目的,对吗?
谢谢你帮忙!
发布于 2016-02-25 11:04:19
我假设您的“观察者”类的一个对象被通知,“写者”类的一个对象已经写入了最少数量的数据。在这种情况下,您需要实现一个抽象类,它表示您的“写器”类的接口,并让您真正的“写者”类继承它并覆盖它的虚拟函数。另外,让您的模拟“写器”类实现从这个接口继承并使用MOCK_METHODn创建模拟实现。
然后,让“观察者”类使用指向抽象类的指针接收来自"writter“对象的通知。通过这种方式,您可以在测试阶段使用依赖注入来切换实现,方法是创建一个模拟的“写器”对象并将其地址传递给“观察者”对象(而不是一个真正的“写器”对象的地址),并在模拟对象上使用EXPECT_CALL设置测试用例。
这是我能给出的最好的建议,因为你没有向我们提供你的课程的详细描述。
编辑:
关于真正的“写者”类的实现:您不必立即创建它,现在可以使用模拟类来测试“观察者”类的行为,并将实现留待以后使用。当然,您最终必须实现它,因为它必须在生产代码中使用。
发布于 2016-02-25 10:41:34
模拟,在google模拟术语中,是用来验证被测试的代码是否对它们执行某些操作的对象。
您所描述的不是一个模拟,而是一个在测试操作下触发代码的实用程序类。
当您的类检测到它所观察到的文件被写入时,它会做什么?例如,如果它执行对另一个对象的调用,那么您可以使用一个模拟对象来检查它是否得到了正确的参数调用,例如写入文件的新的大量数据。
https://stackoverflow.com/questions/35624620
复制相似问题