如何使用Fakes Framework垫片模拟/隔离VS 2012中的内部类?

时间:2012-11-26 21:02:17

标签: visual-studio-2012 internalsvisibleto microsoft-fakes

所以,问题是我的程序集中有一堆内部类,我想要测试的类使用它们。由于访问器已从VS2012中删除,我可以使用[InternalsVisibleTo]并且效果很好......除非我尝试填充内部类,否则它们对于Fakes框架是不可见的。我还应该注意,我正在处理的特定类是一个带静态方法的静态类,我真的不想重构所有东西以使用接口(并使用存根),因为组织中的阻力到了那个重构级别。

有没有办法让这些内部成员可以在Visual Studio 2012中使用填充程序上下文,而无需依靠接口(字面意思)一切?

1 个答案:

答案 0 :(得分:23)

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

其中说:

  

Fakes代码生成器将为生成的Fakes程序集可见的类型生成填充类型和存根类型。要使Fakes和测试组件可以看到内部类型的垫片组件,请将InternalsVisibleToAttribute属性添加到已调整的组件代码中,以便为生成的Fakes组件和测试组件提供可见性。

[assembly: InternalsVisibleTo("FileSystem.Fakes")]
[assembly: InternalsVisibleTo("FileSystem.Tests")]

您还需要一个InternalsVisibleToAttribute,以允许测试程序集从目标程序集访问内部类型。换句话说,你需要:

[assembly: InternalsVisibleTo("TargetAssembly.Fakes")]
[assembly: InternalsVisibleTo("TestAssembly")]