如何访问另一个程序集中的类以进行单元测试?

Kev*_*ose 21 c# unit-testing .net-assembly

我正在开始对Visual-Studio 2008方式进行单元测试,我想知道class为了测试目的,完成跨装配访问的最佳方法是什么.

基本上,我在一个解决方案中有两个项目:

  1. MyProject(C#)
  2. MyProjectTests(C#测试项目)

MyProject中的所有内容当前都具有默认的可访问性,如果我没记错,这意味着一切都是有效的internal.我主要是想在这个class级别进行测试,但是有一些delegates涉及.

将来某个时候可能会有一个外部API,但我大约有20%的功能完整(至少在纸面上)并且我非常谨慎地在这个未经测试的核心上层叠更多代码.因此,我想在应用程序完成足够传统(读取:坏和/或懒惰)功能测试之前完成一些测试,并且肯定在版本n + 1外部API启动之前完成.

除了直接的答案,我们将非常感谢解决方案的一个例子.

Arn*_*kas 35

您可以使用程序集级属性InternalsVisibleToAttribute来实现此目的.

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

到MyProject程序集中的AssemblyInfo.cs.