1

抽象クラスのテストに関する他のスレッド (ここで見つけることができます) に関連して、私の問題は抽象クラスのプライベート変数にアクセスすることです。これは を使用することと関係がありますPrivate Accessorが、他のスレッドで述べたように、単体テストと同じファイル内にプライベート アクセサーを作成することはできません。

私が話しているプラ​​イベート変数は次のとおりです。

public abstract class Component {

    private eVtCompId mComponentId;   //enum
    private eLayer mLayerId;   //enum
    private IF_SystemMessageHandler mLogger;    //interface

これらの特定の変数内の値を取得する単体テストを作成しているため、これらにアクセスする方法を知る必要があります。

4

2 に答える 2

1

リフレクションを使用する必要があります

var instance = new Component();
...
var fieldInfo = typeof(Component).GetField("mComponentId", BindingFlags.Instance | BindingFlags.NonPublic);
var componentId = (eVtCompId)fieldInfo.GetValue(instance);
于 2013-03-18T02:39:04.733 に答える
1

少し醜いことを気にしない場合は、次のようにして、デバッグモードでコンパイルしているときにのみコンパイルされる関数を定義できます。

#if DEBUG
            ...
#endif

次に、パブリックなメソッドを定義し、プライベート変数の値を返すだけで、単体テストでのみアクセスできるようにすることができます。

于 2013-03-18T02:39:11.537 に答える