MSTest で関数の戻り値のprivateなメンバにアクセスする

たとえば次のような場合は自動生成されるクラス(Man_Accessor)によって簡単にアクセスできますよね。
class Man {
    private int age;
}

class ManTest {
    [TestMethod()]
    void AgeTest() {
        var man = new Man_Accessor();
        Assert.IsTrue(man.age >= 20);
    }
}

でも関数やプロパティの戻り値のオブジェクトのprivateなメンバを検査したかったら…?
次のようにすればいいらしいです。
class State {
    private int StateFlag;
    public State(int state) {
        StateFlag = state;
    }
}
class Man {
    public State State { get { return new State(0); } }
}

class ManTest {
    [TestMethod()]
    void AgeTest() {
        var stateObject = new PrivateObject(new Man().State);
        var state = new State_Accessor(stateObject);
        Assert.AreEqual(state.StateFlag, 0);
    }
}

コメント

このブログの人気の投稿

[Win]Xboxコントローラーのバッテリ残量確認と電源を切るツールXControllerTool

UWPアプリでSuicaの履歴を複数件読みだす方法