我正在建立一个持续集成服务器(Hudson)来构建一个Java项目并运行相关的单元/集成测试.大多数这些测试访问数据库,测试数据保存在DbUnit XML文件中.
我正在寻找一种方法来自动保持测试数据库架构是最新的.目前,特定版本的SQL脚本存储在以发布版本命名的目录中:
????scripts ????0.1.0 ????0.1.1 ????0.1.2 ????0.1.4
例如,版本0.1.4的SQL脚本是
scripts\0.1.4\script-0.1.4.sql
问题是这些脚本包含模式更改的混合(例如ALTER TABLE ...)和静态表的更改(例如,向USER_TYPE表添加新角色).
在单元测试的情况下,我只想应用模式更改,因为如上所述,单元测试的所有数据都保存在DbUnit XML文件中.虽然我可以将这两种类型的数据库更改分成不同的文件,但是在将版本应用于QA,生产等时,模式更改和数据更改之间通常需要以某种方式强制执行.
无论如何,这只是一个非常冗长的方式,询问是否有人提出了一种强大的方法来自动保持他们的测试架构是最新的?我知道Unitils有一些支持让测试模式保持最新,但我不确定它是否可以"忽略"SQL delta脚本中的数据更新语句.