Konfiguruję serwer ciągłej integracji (Hudson), aby zbudować projekt Java i uruchomić odpowiednie testy jednostki/integracji. Większość tych testów uzyskuje dostęp do bazy danych, a dane testowe są przechowywane w pliku XML DbUnit.Ciągła integracja: aktualizowanie testowego schematu bazy danych
Poszukuję sposobu automatycznego aktualizowania schematu bazy danych testowych. Obecnie skrypt SQL dla danej wersji jest przechowywany w katalogu o nazwie po wersji wydania:
└───scripts
├───0.1.0
├───0.1.1
├───0.1.2
├───0.1.4
Na przykład, skrypt SQL do wersji 0.1.4 jest
scripts\0.1.4\script-0.1.4.sql
Problem polega na tym, że te skrypty zawierają mieszaninę zmian schematu (np. ALTER TABLE ...) i zmiany w tabelach statycznych (np. dodaj nową rolę do tabeli USER_TYPE).
W przypadku testów jednostkowych chcę zastosować tylko zmiany schematu, ponieważ, jak wspomniano powyżej, wszystkie dane dotyczące testów jednostkowych są przechowywane w pliku XML DbUnit. Chociaż mogę oddzielić te dwa typy zmian w bazie danych na różne pliki, często będzie zależność między zmianami schematu a zmianami danych, które będą wymagać w jakiś sposób wymuszone, gdy wersja zostanie zastosowana do kontroli jakości, produkcji itp.
W każdym razie, jest to bardzo długotrwały sposób pytania, czy ktoś wymyślił solidny sposób automatycznego aktualizowania swojego schematu testowego? Wiem, że Unitils ma pewne wsparcie dla utrzymywania aktualności schematu testowego, ale nie jestem pewien, czy może "zignorować" instrukcje aktualizacji danych w skrypcie delta SQL.