单元测试一个类声明的朋友(内部)

jus*_*mer 7 .net unit-testing friend visual-studio-2010

在我的一些测试帮助程序代码中,我有一个IDbSet(Of T)名为FakeDbSet(Of T)在没有实际数据库的情况下模拟大量EF行为的实现.我声明了类,Friend因为我想强制所有代码与它进行交互IDbSet(Of T).在内部(即在我的Testing程序集中),我访问了许多我希望能够测试的类的公共成员.

问题是,我将我的单元测试保存在一个单独的程序集中Test.Unit,这意味着他们无法访问我的内部实现!我知道我可以用反射来解决这个问题,但这很快就会变得麻烦和混乱.有没有更好的方法来设置我的项目来避免这个问题?

Tom*_*son 8

Add this to your AssemblyInfo.cs file:

[assembly:InternalsVisibleTo("YourOtherAssembly")]
Run Code Online (Sandbox Code Playgroud)

This will make your internal assemblies visible to YourOtherAssembly. However, you should really consider if you need to have it internal. When writing tests try focusing on your public parts.

在这里阅读更多内容:http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx