如何在VS 2012中使用Fakes Framework shims来模拟隔离内部类?

问题描述 投票:9回答:1

所以,问题是我的汇编中有一堆内部类被我想测试的类使用。由于VS2012中的访问器已经被移除,我可以使用 [InternalsVisibleTo] 而且效果很好......除了当我尝试shimify我的内部类时,它们对Fakes框架是不可见的。我还应该注意到,我正在处理的特殊类是一个具有静态方法的静态类,我真的不想重构所有的东西来使用接口(和使用存根),因为在组织中对这种程度的重构的阻力。

有没有办法让这些内部成员在Visual Studio 2012中可以被shims上下文使用,而不用求助于接口(字面意思)一切?

visual-studio-2012 internalsvisibleto microsoft-fakes
1个回答
24
投票

下面的页面介绍了如何使内部类型对生成的假造汇编可见。http:/msdn.microsoft.comen-uslibraryhh708916.aspx#bkmk_internal_types。

其中说到:"Fakes代码生成器将为生成的Fakes程序集可见的类型生成shim类型和stub类型。

Fakes代码生成器将为生成的Fakes汇编可见的类型生成shim类型和stub类型。要使一个 shimmed 程序集的内部类型对 Fakes 和你的测试程序集可见,请添加 InternalsVisibleToAttribute 属性到shimmed装配体代码,使生成的Fakes装配体和测试装配体可见。

所以你需要一个 InternalsVisibleToAttribute 授予您的测试程序集对目标程序集内部类型的访问权。换句话说

[assembly: InternalsVisibleTo("TargetAssembly.Fakes")]
[assembly: InternalsVisibleTo("TestAssembly")]
© www.soinside.com 2019 - 2024. All rights reserved.