0

我正在使用 BoostTest 框架(版本 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 访问私有成员的地方。

4

0 回答 0