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

Fin*_*ter 9 internalsvisibleto microsoft-fakes visual-studio-2012

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

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

Ole*_*ych 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")]
Run Code Online (Sandbox Code Playgroud)

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

[assembly: InternalsVisibleTo("TargetAssembly.Fakes")]
[assembly: InternalsVisibleTo("TestAssembly")]
Run Code Online (Sandbox Code Playgroud)

  • 从我错过了MSDN页重要提示:`假货框架使用相同的密钥签署所有产生assemblies`,所以如果签名的公钥应始终`公钥= 0024000004800000940000000602000000240000525341310004000001000100e92decb949446f688ab9f6973436c535bf50acd1fd580495aae3f875aa4e4f663ca77908c63b7f0996977cb98fcfdb35e05aa2c842002703cad835473caac5ef14107e3a7fae01120a96558785f48319f66daabc862872b2c53f5ac11fa335c0165e202b4c011334c7bc8f4c4e570cf255190f4e3e2cbc9137ca57cb687947bc`如果您已登录的东西!我花了很长时间才抓住这个! (6认同)
  • 我们正在更新MSDN页面.您还需要一个InternalsVisibleToAttribute,以允许测试程序集从目标程序集访问内部类型.换句话说,您需要:[assembly:InternalsVisibleTo("TargetAssembly.Fakes")] [assembly:InternalsVisibleTo("TestAssembly")] (2认同)