7

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

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

4

1 回答 1

8

将此添加到您的 AssemblyInfo.cs 文件中:

[assembly:InternalsVisibleTo("YourOtherAssembly")]

这将使您的内部程序集对YourOtherAssembly. 但是,您应该真正考虑是否需要它internal。在编写测试时,请尝试专注于您的public部分。

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

于 2012-11-28T09:19:44.343 回答