首页 > 解决方案 > MOCK_DECLARE_METHOD 和 MOCK_METHOD 有什么区别

问题描述

我提到过,有些人使用 GTest 用 MOCK_DECLARE_METHOD 声明 Mock 对象,有些人用 MOCK_METHOD 声明。有什么不同?至于我, MOCK_METHOD 更好,不需要 *.cpp 文件和 MOCK_DEFINE_METHOD

标签: c++googletest

解决方案


MOCK_METHOD()更方便,但是会为每个包含它的编译单元(~ .cpp 文件)编译很多代码(甚至是传递性的)。这可能会变得很慢。

使用MOCK_DECLARE_METHOD()并且MOCK_DEFINE_METHOD()你放入MOCK_DECLARE_METHOD()你的头文件,一次又一次地编译相当快;然后你把对应MOCK_DEFINE_METHOD()的文件放到一个单独的.cpp文件中,编译起来会很慢,但只需要编译一次。

注意:似乎从 GTest 1.8.1 开始。MOCK_DECLARE_METHOD/MOCK_DEFINE_METHOD消失了,MOCK_METHOD是唯一的选择。


推荐阅读