2016-07-21 3 views
1

私は、元のコードに触れずに、テストコンテキストでいくつかのプライベートメンバー変数にアクセスする "クリーンな"方法を探しています。私はの友情をテストクラスとの関係の実装について考えていましたが、何らかの理由でまだの保護されたアクセサが必要です。それはなぜそれのようなものですか? privateメンバー変数にアクセスする他の方法はありますか?テストでフレンドシップを使用する

答えて

3

派生クラスからプライベート変数にアクセスすることはできません。protectedsのみです。

TestATestableAの友人であるため、TestableAにはすべてが含まれています。しかし、aがプライベートの場合、TestableAにアクセスすることはできません。

  • 使用はどこでも
  • 保護直接クラスAに友人の宣言を追加します。

    あなたはいくつかのオプションがあります。デバッグ/テストビルドにのみ影響を与えるマクロでも実行できます。このトピックの詳細については

、その理由を説明すると、リンクのFriendship in Service of Testing

+0

感謝と呼ばれる優れたプレゼンテーションがあります。アイデアは元のコードを変更しないことでしたが、それ以外の方法はないようです。 – nyarlathotep108

+1

動画はこの問題に関するものです。クラス外でこのケースの友人を追加する方法を提案しています。現在、clangプラグインとして実装されています。 – Dutow

関連する問題