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:)总是乐于帮助:)指向文档的链接已移至此处: