在我的一些测试帮助程序代码中,我有一个名为IDbSet(Of T)
的{{1}}实现,它在没有实际数据库的情况下嘲笑了很多EF行为。我将类声明为FakeDbSet(Of T)
,因为我想强制所有代码与Friend
进行交互。在内部(即在我的IDbSet(Of T)
程序集中),我访问了我希望能够测试的很多公共成员。
问题是,我将单元测试保存在单独的程序集Testing
中,这意味着他们无法访问我的内部实现!我知道我可以用反射来解决这个问题,但这很快就会变得麻烦和混乱。有没有更好的方法来设置我的项目以避免这个问题?
答案 0 :(得分:8)
将其添加到AssemblyInfo.cs文件中:
[assembly:InternalsVisibleTo("YourOtherAssembly")]
这将使您的内部装配对YourOtherAssembly
可见。但是,您应该考虑是否需要internal
。在编写测试时,请尝试关注public
部分。