Java プロジェクトを構築し、関連するユニット/統合テストを実行するために、継続的統合サーバー (Hudson) をセットアップしています。これらのテストのほとんどはデータベースにアクセスし、テスト データは 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 ファイルに保持されるためです。これら 2 種類のデータベースの変更を別々のファイルに分けることはできますが、多くの場合、スキーマの変更とデータの変更の間には依存関係があり、リリースが QA や運用などに適用されるときに何らかの方法で強制する必要があります。
とにかく、これは、誰かがテスト スキーマを自動的に最新の状態に保つための堅牢な方法を思いついたかどうかを尋ねる、非常に長ったらしい言い方です。Unitilsがテスト スキーマを最新の状態に保つためのサポートを提供していることは知っていますが、SQL デルタ スクリプトのデータ更新ステートメントを「無視」できるかどうかはわかりません。