用gtest测试类的时候不可避免的会遇到private方法的测试。
比较流行的解决方案有如下两种:
1、将test class作为被测试class的友元(friend)
这种方式的缺陷很明显,友元关系的加入破坏了被测试代码的完整性,所以此法不可取。
2、用编译宏的方式来将private在测试时替换成public
这是一种比较优雅的解决方式,只需要如下两步即可:
(1)在test class中加入如下代码:
#ifdef GTEST
#define private public
#define protected public
#endif
(2)在test class的makefile中加入如下宏:
CFLAGS = -DGTEST
这样在编译时,会自动将所有private和protected替换为public。
其实,在测试中,会发现被测函数中常常会有一些可变属性需要跳过,也可以用编译宏来解决,比如:在PV日志中会有pvtime,而时间每次请求都会不同,这样就可以用编译宏来跳过pvtime或者替换pvtime。
阅读(8356) | 评论(1) | 转发(0) |