GTest测试CHomaMessage类重载比较运算符未生效问题咨询
问题诊断与修复方案
核心结论
GTest完全支持测试重载运算符,你遇到的问题全部由代码编写错误导致。
具体错误点与修复方法
- 测试用例的指针比较错误
你写的EXPECT_TRUE(&message2 == &message3);中&是取地址符,此处是在比较两个栈对象的内存地址,而非对象本身的内容。两个独立创建的栈对象地址必然不同,该断言一定会失败,且完全不会调用你重载的==运算符。
修复方式:去掉取地址符,直接比较对象本身即可触发重载的运算符:EXPECT_TRUE(message2 == message3); - 类定义语法错误
你贴出的CHomaMessage类定义末尾缺少C++类要求的结尾分号,会直接导致编译报错,需要补全。 - 构造函数缺失问题
你测试时调用了4参数的构造函数CHomaMessage(3, 0, 4, 1024),但你贴出的类定义中没有声明对应的构造函数,你需要确保头文件中已经正确声明并实现了该构造函数,且完成了id、size两个const成员的初始化,否则也会出现编译错误。 - 你第二个测试断言
EXPECT_FALSE(message2 < message3);的逻辑是正确的:你给两个对象传入的size均为4、prevIndex均为0,remainingSize()返回值相同,因此message2 < message3的结果确实是false,符合你的预期。
内容的提问来源于stack exchange,提问作者Alberto Merino Risueño
相关产品推荐
相关产品推荐

