C++ 用googletest测试受保护的成员

C++ 用googletest测试受保护的成员,c++,inheritance,testing,googletest,protected,C++,Inheritance,Testing,Googletest,Protected,谷歌测试时,我对继承感到困惑。我有一个a类,它具有受保护的属性。如果我想访问这些,我必须扩展该类,但同时我还需要扩展public::testing::Test,其唯一目的是gtest 这个问题最优雅的解决方案是什么? 此外,我还试图避免定义受保护的public有一个FRIEND\u测试声明,它用在测试类的头中。基本上,它将测试定义为类的朋友。在我的用例中,当以发布模式编译时,我们禁用了所有测试包含,所以它不会对真正的可执行文件造成任何伤害 查看以避免在测试类中留下测试痕迹,请使用夹具的多重继承:

谷歌测试时,我对继承感到困惑。我有一个
a类
,它具有
受保护的
属性。如果我想访问这些,我必须扩展该类,但同时我还需要扩展
public::testing::Test
,其唯一目的是
gtest

这个问题最优雅的解决方案是什么?
此外,我还试图避免定义受保护的public

有一个FRIEND\u测试声明,它用在测试类的头中。基本上,它将测试定义为类的朋友。在我的用例中,当以发布模式编译时,我们禁用了所有测试包含,所以它不会对真正的可执行文件造成任何伤害


查看

以避免在测试类中留下测试痕迹,请使用夹具的多重继承:

class ToBeTested
{
protected:
    bool SensitiveInternal(int p1, int p2); // Still needs testing
}

// Google-test:
class ToBeTestedFixture : public ToBeTested, public testing::Test
{
   // Empty - bridge to protected members for unit-testing
}

TEST_F(ToBeTestedFixture, TestSensitive)
{
    ASSERT_TRUE(SensitiveInternal(1, 1));
    ASSERT_FALSE(SensitiveInternal(-1, -1));
}

正是我所需要的,tnx:)总是乐于帮助:)指向文档的链接已移至此处: