2つの内部プロパティを持つパブリッククラス(TargetContainerDto
)があります。列挙型とその列挙型の値を含む型。ユニットの内部プロパティをテストするためのリフレクション
私はユニットのテストを試みていますが、問題があります。
internal enum TargetContainerType
{
Endpoint,
Group,
User,
UserGroup
}
internal TargetContainerType Type { get; set; }
これは私の反射コードは
public void setType(TargetContainerDto t, int val)
{
BindingFlags bf = BindingFlags.NonPublic | BindingFlags.Instance;
PropertyInfo pi = t.GetType().GetProperty("Type", bf);
pi.SetValue(t, val, null);
}
public TargetContainerDto setTypeTo(TargetContainerDto t, int val)
{
setType(t, val);
return t;
}
TargetContainerDto
がタイプよりも多くの性質を持っている私のテストクラスであるが、彼らはので、それらが細かいテスト公開されています。 iconURL
は、タイプに応じてTargetContainerDto
で定義された文字列です。ここに私のtestMethodです:
public void DefaultSubGroupIcon()
{
var o1 = new TargetContainerDto
{
Id = 1234,
DistinguishedName = "1.1.1.1",
SubGroup = "test",
};
setType(o1, 3);
Assert.AreEqual(o1.IconUrl, "/App_Themes/Common/AppControl/Images/workstation1.png");
}
私はtypevalueを設定する必要があるとき、私は試験方法でsetTypeToを呼び出すが、私はMethodAccessException
を取得しています。私はそれがenumにアクセスできないからだと思う。リフレクションによってenumにアクセスするにはどうすればよいですか?
おかげ
ちょうど興味深いことですが、テスト中のオブジェクトの内部状態にアクセスし、アプリケーションを少し再設計するために、テストでリフレクションを使用することをやめたことがありますか? –
あなたは例外を投稿できますか? Typeは前に設定された値を持っていますか、それともnullですか? – Akku
ちょうどあなたのシナリオをテストしたところ、うまくいきました。例外の詳細だけでなく、** TargetContainerDto **クラスの定義についても詳細を教えてください。それの基本クラスは何ですか? –