0

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

4

0 に答える 0