Ben*_*dEg 5 c# methods unit-testing interface
是否可以编写只能通过单元测试调用的方法?我的问题是我们的框架包含很多Singleton类,这使得单元测试很难一段时间.我的想法是创建一个这样的简单界面:
public interface IUnitTestClearable
{
void ClearForUnitTest();
}
Run Code Online (Sandbox Code Playgroud)
将调用此方法来"重置"单例实例,以便更好地处理单元测试.但是这个方法只能从单元测试类/实例中调用.这可能吗?
您可以在内部创建一个方法,并设置InternalsVisibleTo.这样,您可以为内部提供另一个程序集访问权限
http://geekswithblogs.net/jwhitehorn/archive/2007/11/09/116750.aspx
但蒂姆就在我面前,因为我结束了这个:)
在您的项目文件AssemblyInfo.cs中,设置
[assembly: InternalsVisibleTo("Application.Test")]
Run Code Online (Sandbox Code Playgroud)
或者如果您有签名的程序集
[assembly: InternalsVisibleTo("Application.Test, PublicKey=KEYHERE")]
Run Code Online (Sandbox Code Playgroud)
提供对单元测试的访问,同时控制或阻止使用该访问的其他事物(ab)是一个好主意.有许多方法可以做到,但最简单的方法是使用InternalsVisibleTo