1
私は、元のコードに触れずに、テストコンテキストでいくつかのプライベートメンバー変数にアクセスする "クリーンな"方法を探しています。私はの友情をテストクラスとの関係の実装について考えていましたが、何らかの理由でまだの保護されたアクセサが必要です。それはなぜそれのようなものですか? privateメンバー変数にアクセスする他の方法はありますか?テストでフレンドシップを使用する
私は、元のコードに触れずに、テストコンテキストでいくつかのプライベートメンバー変数にアクセスする "クリーンな"方法を探しています。私はの友情をテストクラスとの関係の実装について考えていましたが、何らかの理由でまだの保護されたアクセサが必要です。それはなぜそれのようなものですか? privateメンバー変数にアクセスする他の方法はありますか?テストでフレンドシップを使用する
派生クラスからプライベート変数にアクセスすることはできません。protectedsのみです。
TestA
はTestableA
の友人であるため、TestableA
にはすべてが含まれています。しかし、a
がプライベートの場合、TestableA
にアクセスすることはできません。
A
に友人の宣言を追加します。 あなたはいくつかのオプションがあります。デバッグ/テストビルドにのみ影響を与えるマクロでも実行できます。このトピックの詳細については
、その理由を説明すると、リンクのFriendship in Service of Testing
感謝と呼ばれる優れたプレゼンテーションがあります。アイデアは元のコードを変更しないことでしたが、それ以外の方法はないようです。 – nyarlathotep108
動画はこの問題に関するものです。クラス外でこのケースの友人を追加する方法を提案しています。現在、clangプラグインとして実装されています。 – Dutow