吸气和二传手vs FRIEND_TEST

时间:2019-07-25 05:36:56

标签: c++ googletest gmock

我知道这对UT来说不是很好的类设计,但是...

如果有需要测试的受保护变量,那么仅使用FRIEND_TEST在测试中获取/设置这些变量会更好吗?还是应该为每个变量创建getter和setter方法?

例如

class Dog
{
public:
//some methods

protected:
   int age;
   std::string color;
   std::string breed
}

声明FRIEND_TEST不需要太多开销,这与我将为每个== 6个新方法创建getter和setter的方法不同!但是更正确的解决方案是什么?

2 个答案:

答案 0 :(得分:2)

如果您只需要一个班级即可访问您的受保护成员,请使用好友班级。这是C ++中的绝对规则。

在类中添加getter和setter只会增加开销,并且在最佳情况下,编译器会将其删除。

如果您想了解有关朋友课程的更多信息,this链接将很有用。

答案 1 :(得分:0)

  1. FREIND_TEST并不是一个好的解决方案,因为您无法真正控制谁可以访问受保护的成员。
  2. 您可以将被测试的类定义为测试器类的内部类。仅在测试版本上启用此嵌套。