我有一个TargetContainerDto
具有 2 个内部属性的公共类()。一个枚举和一个包含来自该枚举的值的类型。
我正在尝试对类型进行单元测试,但我遇到了问题。
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
具有比 Type 更多的属性,但它们是公开的,因此可以测试它们。这iconURL
是一个TargetContainerDto
根据类型定义的字符串。这是我的测试方法:
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");
}
当我需要设置类型值时,我在测试方法中调用 setTypeTo,但我得到了一个MethodAccessException
. 我认为这是因为我无法访问枚举。如何通过反射访问枚举?
谢谢