我对InternalsVisibleTo
的理解是它主要用于单元测试。但这意味着我的单元测试类,如果它在一个单独的项目中,需要引用具有InternalsVisibleTo
类的项目,并且 类需要对该单元的引用测试类,以便将其程序集名称放入属性的参数中。
如何解决这个Catch-22?
答案 0 :(得分:1)
考虑以下项目结构。
您有一个名为(SF^OF)|ZF
的项目,正在构建一个名为
Company.Org.PersonManager
它包含以下类声明
Company.Org.PersonManager.dll
如果要测试Foo方法,可以在名为internal class Person
{
public string Foo();
}
的项目中编写一个nunit测试
实现可能类似于:
Company.Org.PersonManager.Test
上面的代码无法编译,因为Person类只在程序集[TestFixture]
public class TestPersonManager
{
[Test]
public void Test_Foo()
{
Person p = new Person();
Assert(p .... );
}
}
如果您添加以下行
,这就是Company.Org.PersonManager.dll
派上用场的地方
InternalsVisibleTo
项目[assembly: InternalsVisibleTo("Company.Org.PersonManager.Test.dll")]
中的到Properties/AssemblyInfo.cs
,您告诉编译器该程序集
Company.Org.PersonManager
可以访问程序集Company.Org.PersonManager.Test.dll
这不应该导致循环引用,Company.Org.PersonManager.dll
应该引用Company.Org.PersonManager.Test
,但不需要其他引用。