9

所以,问题是我的程序集中有一堆内部类,供我要测试的类使用。由于访问器已从 VS2012 中删除,我可以很好地使用[InternalsVisibleTo]并且效果很好......除非我尝试改变我的内部类,它们对 Fakes 框架不可见。我还应该注意,我正在处理的特定类是具有静态方法的静态类,并且我真的不想重构所有内容以使用接口(和使用存根),因为组织中对这种重构级别的抵制。

有没有办法让这些内部成员在 Visual Studio 2012 中的 shims 上下文中可用,而无需诉诸接口(字面意思)一切?

4

1 回答 1

24

以下页面描述了如何使内部类型对生成的 fakes 程序集可见。http://msdn.microsoft.com/en-us/library/hh708916.aspx#bkmk_internal_types

其中说:

Fakes 代码生成器将为生成的 Fakes 程序集可见的类型生成 shim 类型和存根类型。要使填充程序集的内部类型对 Fakes 和您的测试程序集可见,请InternalsVisibleToAttribute向填充程序集代码添加属性,以使生成的 Fakes 程序集和测试程序集可见。

因此,您需要一个InternalsVisibleToAttribute授予您的测试程序集访问目标程序集内部类型的权限。换句话说:

[assembly: InternalsVisibleTo("TargetAssembly.Fakes")]
[assembly: InternalsVisibleTo("TestAssembly")]
于 2012-11-26T21:35:44.170 回答