【发布时间】:2012-07-16 06:37:16
【问题描述】:
我想为下面的课程编写单元测试。
如果名称不是“MyEntity”,则 mgr 应为空白。
负单元测试
使用 Manager 私有访问器,我想将名称更改为“Test”,以便 mgr 应该为空。
然后将验证经理值。
为此,我想显式调用静态构造函数
但是当我使用
Manager_Accessor.name = "Test"
typeof(Manager).TypeInitializer.Invoke(null, null);
name 始终设置为“MyEntity”如何将 name 设置为“Test”并调用静态构造函数。
public class Manager
{
private static string name= "MyEntity";
private static object mgr;
static Manager()
{
try
{
mgr = CreateMgr(name);
}
catch (Exception ex)
{
mgr=null;
}
}
}
【问题讨论】:
-
使 'mgr' 静态意味着 所有 'Manager' 实例共享 same 'mgr' 值,该值也永远无法更改(如它是只读的)。这真的是你想要的吗?
-
所以您需要更改一个私有硬编码静态值,该值负责设置私有静态只读值以用于测试目的?这就是为什么大多数可测试性设计选择不喜欢静态。
标签: c# mstest system.reflection static-constructor