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