我正在围绕现有项目建立一些测试脚手架。这包括一些使用 JUnit 和 DbUnit 的集成测试。我还为持续集成设置了 Jenkins 安装。
我的问题涉及更改开发和测试环境之间的数据库连接。我在本地安装了自己的产品堆栈,以进行快速的临时测试和调查。在开发过程中,我会针对我的私有数据库运行测试,因为它更快,而且我不会用有缺陷的工作中的代码破坏其他人的一天。
签入代码后,Jenkins 将运行我的测试。现在它仍然指向我的本地数据库。我宁愿让 Jenkins 针对不同的数据库运行测试,该数据库位于测试环境中。
是否有最佳实践/策略/技术/等来更改数据库连接以进行测试而无需更改代码?如果解决方案允许 Jenkins 对多个 DB 运行相同的测试(应该是可能的,因为 DbUnit 是不可知的),则奖励积分。
编辑以获取更多信息:
该产品很大,有几十个不同的交互组件(通常在单独的虚拟机/进程中)。在实时系统中,不同的进程通常通过数据库进行通信。IE,UI 进程将更改写入表,后端进程轮询该表以进行更改。是的,这很糟糕。对于集成测试,我使用 UI 配置系统并使用 DbUnit 捕获该状态。然后我可以针对那个“输入”运行测试。
我的组件和所有新组件都由 maven 管理。数据库连接当前在测试设置中是硬编码的。DbUnit 系统有效;我只是希望能够切换我的测试引用的数据库,具体取决于它们是由我在我的开发环境中运行,还是由 Jenkins 在测试环境中运行。