我有一个静态类。我可以修改它并使其扩展interface \ abstract class。
它包含
为了使这段代码可以测试,我想
答案 0 :(得分:2)
在我看来,静态类有两个好处:
如果你在那里建模方法以便它们是纯净的,你可以立即测试它们。另一方面,全局数据(您的常量和只读成员)不需要测试,因为它们应该由所述方法生成。
因此,如果您的静态方法使用类中的全局数据,只需重构它们以将此数据作为参数包含到方法中,使用简单包装器重载这些数据,为全局数据提供数据并测试新的 - 现在是纯函数。注意将数据库数据或系统时间(DateTime.Now)以及类似的副作用数据包含在您的方法中。
如果参数列表重大,则将该方法转换为一个类,其中一些/大多数参数被封装到新的类字段中 - 始终记住SOLID中的S(单一责任) - 只将所有内容混为“MyStaticGlobals” - 如果你在分离时测试零件,则为class / singelton。
答案 1 :(得分:1)
一种选择是将已使用的静态类转换为常规类。在主应用程序中,您添加一个单例,以便从任何地方使用相同的实例,因此单例有效地将实例转换为全局。但在测试中,您可以按需创建实例。