我有一个普通的vanila java应用程序。它涉及数据库访问和配置文件,从中读取所有配置。我使用工厂模式来实例化并创建所有处理器类和util类。我有db util类来处理所有与db相关的功能。 我必须将db表名称传递给dbutil和其他配置到处理类。我想知道将配置传递到我的应用程序的各个类的最佳设计。可测试代码的设计策略应该是什么?
设计策略 - 1.在一个类中读取配置文件并创建各种配置对象 - dbconfig对象,处理配置对象。(使用getter或public final字段访问配置字段?) 2.在构造函数中传递config对象 - 将dbconfig传递给dbutil并将config处理为处理util。
设计策略2 - 1.read在公共静态字段中的一个类中的配置文件。 2.将config类传递给每个类,每个类将从该类的公共字段中获得所需的任何内容。
由于
答案 0 :(得分:0)
在进行UnitTests时,您需要在隔离中测试一小部分代码。
特别是UnitTest从不接触文件系统或数据库等外部资源。这些资源被具有简单,快速和可配置行为的测试假人取代。 (见Test Driven Development by Kent Beck)
因此,在设计应用程序时,请遵循clean code和simple design的规则。那你的问题就会过时了......
答案 1 :(得分:0)
我个人倾向于采用第一种方法,因此您可以密切关注principle of Dependency Inversion。无论什么类需要来自配置文件的信息,理想情况下都不应该单独读取它(从配置文件或具有所有信息的类),而是从实例化它的另一个类传递必要的值。通过这种方式,只需在构造函数中提供“测试”配置值,所有需要配置信息的类都是可测试的(孤立地)。
然而,需要注意的是:为了实现这一点,您可能需要围绕依赖注入构建项目。我可以从你所提到的内容中看出,你已经遵循这种模式,因为你的第一种方法实际上听起来像是通过构造函数的依赖注入。