我正在尝试设置一些使用数据库的单元测试。我想在开发人员的计算机上而不是在生产数据库上使用测试数据库。我现在使用的方法是在连接到数据库时检查环境变量,如果该变量存在以连接到本地变量而不是生产变量。
我可以通过Run Configurations在Eclipse中设置环境变量,但是我希望每当运行JUnit测试时都会发生这种情况(以防万一)。
这在Eclipse中是否可行?
答案 0 :(得分:5)
为什么不将数据库连接注入需要测试的逻辑中,仅处理启动代码中的环境变量(通常不需要单元测试)?
在测试中使用环境变量通常表明配置在代码IME中发生得太深。在可能的情况下,我发现通过依赖注入构造具有所需内容的对象要好得多,保持代码与配置代码分离,从而确定要注入的内容。
答案 1 :(得分:1)
我认为硬编码连接信息或测试/生产开关不是最好的主意。
基本上,我们在属性文件中有数据库连接信息。在单元测试中,我们使用另一个属性文件,其中包含测试数据库的连接信息。 (轻量级内存数据库可能是单元测试的最佳选择。)
单元测试通常有自己的设置装置,它们构成了每个测试用例的基本环境,因此使用专用属性文件应该不会有问题。