C++ 继承测试类的Boost单元测试夹具,是否可以访问受保护的方法?

C++ 继承测试类的Boost单元测试夹具,是否可以访问受保护的方法?,c++,boost,googletest,boost-test,C++,Boost,Googletest,Boost Test,我以前使用过googletest/GTest,我确信它允许您的文本fixture类继承您正在测试的类,因此它可以访问被测试类的受保护方法(无需将它们公开) 我正试图通过Boost单元测试实现同样的目标,但它不允许我访问受保护的方法(即使我的测试夹具类继承了被测试的类) 测试夹具类是否有办法访问Boost测试中被测试类的受保护方法?如果不是,为单元测试公开私有/受保护方法的最佳方式是什么?BOOST\u FIXTURE\u test\u案例中的测试函数是从FIXTURE继承的结构的一部分。它是公共

我以前使用过googletest/GTest,我确信它允许您的文本fixture类继承您正在测试的类,因此它可以访问被测试类的受保护方法(无需将它们公开)

我正试图通过Boost单元测试实现同样的目标,但它不允许我访问受保护的方法(即使我的测试夹具类继承了被测试的类)


测试夹具类是否有办法访问Boost测试中被测试类的受保护方法?如果不是,为单元测试公开私有/受保护方法的最佳方式是什么?

BOOST\u FIXTURE\u test\u案例中的测试函数是从FIXTURE继承的结构的一部分。它是公共的,受保护的成员可以像局部变量一样对待。加入一个从您想要测试的类继承的装置,您就可以开始比赛了:

class TestClass {
public:
    TestClass() {}
protected:
    bool Foo() { return true; }
};

class MyFixture : public TestClass {
public:
    MyFixture() { bar = 1; }
protected:
    int bar;
};

BOOST_FIXTURE_TEST_CASE(MyTest, MyFixture) {
    BOOST_TEST(bar == 1);
    BOOST_TEST(Foo());
}

这里描述的是C++的行为,而不是Booost。如果您发布一个非常简单的代码来说明这个问题,我相信我们一定能够解决。还请注意,Boost中有两种类型的夹具测试用例。测试:请参阅和
Boost\u fixture\u test\u用例
实际上将从夹具继承。请注意,这是Boost 1.65.1,YVMV。夹具的意思是什么?这里的夹具指在测试之间固定的测试的一部分。许多测试可以共享相同的设置。示例:它们都可以使用相同的配置文件和输入代码。