测试:gmock

编程入门 行业动态 更新时间:2024-10-25 23:27:09

<a href=https://www.elefans.com/category/jswz/34/1771117.html style=测试:gmock"/>

测试:gmock

文章目录

  • 简介
  • 使用总结

简介

这个头文件是将全局函数的mock,是在gmock的上层,又做了一层全局函数的简化,方便使用。

使用总结

最近遇到了一个问题,和这个的使用相关,先总结如下;
这个头文件实现的宏定义:MOCK_GLOBAL_FUNC*_;
主要的是一个类定义,和两个全局符号:一个全局instance对象,一个全局的mock函数;在这个mock函数里调用instance的方法来实现mock机制的内部逻辑判断。如下两个符号:

std::unique_ptr< gmock_globalmock_##Method > gmock_globalmock_##Method##_instance;\
GMOCK_RESULT_(tn, __VA_ARGS__) ct Method() constness { \MOCK_GLOBAL_CHECK_INIT(Method); \return gmock_globalmock_##Method##_instance->Method();\}\

如果多个cpp,同时使用这个宏MOCK_GLOBAL_FUNC*_,可能导致符号重复定义的错误。如果,为了避免这个符号重复定义而,将这两个符号改成static,也不是好的选择。因为可能需要设置stub的时候,需要每个cpp里都要设置stub。
最合理的方式是:在使用的时候,对需要mock的全局函数,单独设置一个cpp文件,单独进行编译,然后再编写一个接口函数的头文件,使用extern关键字,将这个mock函数展现出来,链接时同时使用之前单独编译的目标文件。提供给外界的只是这个接口头文件。

#define INTF_MOCK_GLOBAL_FUNC0_(tn, constness, ct, Method, ...) \
class gmock_globalmock_##Method; \
extern std::unique_ptr< gmock_globalmock_##Method > gmock_globalmock_##Method##_instance;\
extern GMOCK_RESULT_(tn, __VA_ARGS__) ct Method() constness;

更多推荐

测试:gmock

本文发布于:2023-12-02 05:27:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1651774.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:测试   gmock

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!