如果实在不想为测试添加一个公开的构造函数,可以使用内部(internal)构造函数。有了[InternalsVisibleTo],这些内部类成员和方法对测试程序集是可见的。代码清单3.9给出了详细的例子。
代码清单3.9 让内部成员对测试程序集可见
- public class LogAnalyzer
- {
- ...
- internal LogAnalyzer (IExtensionManager extentionMgr)
- {
- manager = extentionMgr;
- }
- ...
- }
- Using System.Runtime.CompilerServices;
- [assembly: InternalsVisibleTo"ABOUT.CH3.Logan.Tests"]
AssemblyInfo.cs文件中经常都有这样的代码。如果没有其他好方法让类成员对测试类可见,使用internal通常也不错。