2016-12-27 33 views
0

我有一个普通的vanila java应用程序。它涉及数据库访问和配置文件,它从中读取所有配置。我使用工厂模式来实例化并创建所有处理器类和util类。我有db util类处理所有数据库相关的功能。 我必须将db表名称传递给dbutil和其他配置才能处理类。我想知道将配置传递给我的应用程序的各种类的最佳设计。可测试代码的设计策略是什么?涉及配置的java可测试代码

设计策略 - 1.Read配置文件中的一类,并创建各种配置对象 - (?干将使用或公开最终域访问配置域)DBCONFIG对象,处理的配置对象 2.pass在构造函数中的配置对象 - 将dbconfig传递给dbutil并将配置处理为处理util。

设计策略2 - 一类stire 1.read配置文件中的公共静态字段。 2.将配置类传递给每个类,每个类将从该类的公共字段中获取所需的任何内容。

感谢

+0

这没有好的答案。两者都可能是正确的,都可能是错误的。这是一个设计,总有人会喜欢这个或那个 – AxelH

+0

正如AxelH所说,两种方法都可以 - 选择一个你和你的团队都适应的方法。看看你的config和utils类的用法和生命周期。也考虑重新加载配置。 –

回答

0

在做单元测试你在隔离测试代码的一小部分。

特别是UnitTest从不接触文件系统或数据库等外部资源。这些资源被简单,快速和可配置的行为替换为测试假人。 (请参阅Test Driven Development by Kent Beck

因此,当您设计应用程序时,请遵循clean codesimple design的规则。然后,你的问题将变得过时......

0

我个人倾向于对第一种方法,让你可以紧跟principle of Dependency Inversion。无论什么类需要来自配置文件的信息理想情况下都不应该自己读取(无论是从配置文件还是从具有所有信息的类)读取,而是从另一个实例化它的类传递必要的值。通过这种方式,只需要在构造函数中提供“测试”配置值,所有这些需要配置信息的类都可以被测试(孤立地)。

然而,一个警告:这是可行的,你可能会构建围绕依赖注入项目。但是,从您提到的内容中可以看出,您已经遵循了这种模式,因为您的第一种方法实际上听起来像通过构造函数进行依赖注入。