Я намагаюся визначити спосіб роботи з тестовою базою даних (на SQL Server) для нашого інтеграційного тестування.
Моя ідея полягала в тому, щоб зробити наступні кроки при запуску збірки тестових інтеграцій:
- створити абсолютно порожню базу даних
- запустіть сценарій "створити об'єкти бази даних", щоб створити всі відповідні об'єкти бази даних (таблиця, представлення, послідовності тощо)
- заповнити "базові дані" (значення пошуку тощо)
- зробіть знімок бази даних, який називається
(db)_Basis
"базовою лінією" для майбутніх тестів на інтеграцію
Тепер перед кожним тестовим класом (що містить 1-n тестів) я планував просто зробити "відновлення з огляду", щоб повернутися до чітко визначеного, більш-менш "порожнього" стану бази даних. Поки що працює як шарм.
Однак є набір інтеграційних тестів, які потребують роботи на великій тестовій базі даних, тому я сподівався зробити це перед кожним із цих тестових приладів (класи з n індивідуальними тестами)
- відновити базу даних зі
(db)_Basis
знімка - вставити ці 50 000 + рядків даних у базу даних
- створити ще один знімок
(db)_With_Testdata
знімка
а потім для кожного тесту перевстановіть базу даних до чітко визначеної (db)_With_Testdata
версії знімка, запустіть тести, перевірте результат тощо.
Проблема полягає в тому, що я не можу одночасно мати два db-знімки - як тільки я це зробити, я не можу відновити свою базу даних ні для одного з них .... Я постійно отримую цю помилку:
Повідомлення 3137, рівень 16, стан 4, рядок 9
не можна повернути. Або основні, або імена знімків неправильно вказані, всі інші знімки не були скинуті або відсутні файли.Повідомлення 3013, рівень 16, стан 1, рядок 9
ПОНЯТТЯ ДАТАБАЗА закінчується аномально.
Це справді, як працюють знімки бази даних SQL Server ?? Здається, жахливо обмежує ..... Я б зрозумів, якби я не міг повернутися безпосередньо до оригінального знімка "(db) _Basis" - але тільки тому, що зараз у мене є два знімки, я не можу навіть повернутися до останнього ?!?!?