我正在使用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访问私有成员的任何地方。