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