BoostTest:无法访问受保护的成员

时间:2017-10-13 11:10:20

标签: c++ private protected boost-test turtle-mock

我正在使用BoostTest Framework(版本1.57.0)和Turtle作为模拟库(版本1.3.0)。 我能够在测试用例中访问公共和私有函数,但我无法访问受保护的函数。 我可以使用Turtle的MOCK_BASE_CLASS来模拟这些受保护的函数。 例如:

RealClass.hpp 
class RealClass
{
public: 
    void publicFunction();
protected:
    void protectedFunction();
private:
    void privateFunction();         
};

RealClass_UnitTest.hpp
BOOST_AUTO_TEST_SUITE( RealClass_UnitTest );

BOOST_AUTO_TEST_CASE( RealClass_publicFunction)
{
    RealClass  RealObject;
    RealObject.publicFunction()  // Can be accessed and tested
}

BOOST_AUTO_TEST_CASE( RealClass_protectedFunction)
{
    RealClass  RealObject;
    RealObject.protectedFunction()  // Error: realClass::protectedFunction() is protected
}

BOOST_AUTO_TEST_CASE( RealClass_privateFunction)
{
    RealClass  RealObject;
    RealObject.privateFunction()  // Can be accessed and tested
}

BOOST_AUTO_TEST_SUITE_END();

我不明白为什么我可以访问RealObject.privateFunction(),但不能访问RealObject.protectedFunction()。

我没有设置测试框架,但我找不到允许BoostTest访问私有成员的任何地方。

0 个答案:

没有答案