所以,我正在阅读谷歌测试博客,它说全球状态很糟糕,并且很难编写测试.我相信 - 我的代码现在很难测试.那我该如何避免全球状态呢?
我使用全局状态(据我所知)最重要的事情是在开发,接受和生产环境之间管理关键信息.例如,我有一个名为"Globals"的静态类,其静态成员名为"DBConnectionString".当应用程序加载时,它确定要加载哪个连接字符串,并填充Globals.DBConnectionString.我在Globals类中加载文件路径,服务器名称和其他信息.
我的一些函数依赖于全局变量.因此,当我测试我的函数时,我必须记住先设置某些全局变量,否则测试将失败.我想避免这种情况.
有没有一种管理状态信息的好方法?(或者我是否错误地了解全球状态?)
依赖注入是您正在寻找的.不要让这些函数出去寻找它们的依赖关系,而是将依赖项注入函数中.也就是说,当你调用函数时,它们会传递他们想要的数据.这样就很容易将测试框架放在一个类中,因为你可以在适当的地方插入模拟对象.
很难避免某些全局状态,但最好的方法是在应用程序的最高级别使用工厂类,而低于最高级别的所有内容都基于依赖注入.
两个主要好处:一,测试更容易,两个,你的应用程序更松散耦合.您依赖于能够针对类的接口而不是其实现进行编程.