如何避免全局状态?

2024-03-10

所以,我正在阅读谷歌测试博客,它说全局状态很糟糕并且使得编写测试变得困难。我相信——我的代码现在很难测试。那么如何避免全局状态呢?

我使用全局状态(据我所知)最重要的用途是管理我们的开发、验收和生产环境之间的关键信息。例如,我有一个名为“Globals”的静态类,其中有一个名为“DBConnectionString”的静态成员。当应用程序加载时,它确定要加载哪个连接字符串,并填充 Globals.DBConnectionString。我在 Globals 类中加载文件路径、服务器名称和其他信息。

我的一些函数依赖于全局变量。因此,当我测试我的函数时,我必须记住首先设置某些全局变量,否则测试将失败。我想避免这种情况。

有没有好的方法来管理状态信息? (或者我错误地理解了全局状态?)


依赖注入就是您正在寻找的。不要让这些函数出去寻找它们的依赖项,而是将依赖项注入到函数中。也就是说,当您调用函数时,将它们想要的数据传递给它们。这样就可以很容易地在类周围放置一个测试框架,因为您可以在适当的地方简单地注入模拟对象。

很难避免某些全局状态,但最好的方法是在应用程序的最高级别使用工厂类,并且该最高级别以下的所有内容都基于依赖项注入。

有两个主要好处:一是测试变得更加容易,二是应用程序的耦合更加松散。您依赖于能够针对类的接口而不是其实现进行编程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免全局状态? 的相关文章

随机推荐