Я использую BoostTest Framework (версия 1.57.0) с Turtle в качестве фиктивной библиотеки (версия 1.3.0).
Я могу получить доступ к открытым и закрытым функциям в тестовом примере, но не могу получить доступ к защищенным функциям.
Я могу издеваться над этими защищенными функциями с MOCK_BASE_CLASS от Turtle.
Пример:
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 разрешен доступ к закрытым членам.
Задача ещё не решена.
Других решений пока нет …