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

时间:2012-11-28 09:15:42

标签: .net visual-studio-2010 unit-testing friend

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

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

1 个答案:

答案 0 :(得分:8)

将其添加到AssemblyInfo.cs文件中:

[assembly:InternalsVisibleTo("YourOtherAssembly")]

这将使您的内部装配对YourOtherAssembly可见。但是,您应该考虑是否需要internal。在编写测试时,请尝试关注public部分。

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