私は 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 がプライベート メンバーにアクセスできる場所が見つかりません。