Есть ли у кого-нибудь предложения по наилучшей практике или предпочтительному способу отката транзакций базы данных, выполненных из интеграционных тестов, таких как Selenium?Отказоустойчивая база данных после тестов интеграции (Selenium)
Вот наша текущая ситуация. У нас есть веб-проект .net с несколькими модульными тестами, которые отлично работают в нашей тестовой среде - каждый тест наследует родительский класс, который открывает транзакцию в [SetUp] и рулонах отмените транзакцию в [TearDown]. После каждого теста наша тестовая база данных восстановлена обратно в исходное состояние.
Однако все меняется, как только мы попадаем в нашу интеграционную среду. Наш сервер непрерывной интеграции автоматически компилирует наши коммиты и выталкивает их на тестовый сервер, так что сервер всегда работает на самом обновленном коде. Мы также установили экземпляр Selenium для автоматизации взаимодействия пользователя с сайтом. Тесты селена в основном взаимодействуют с существующим сервером Selenium и сообщают серверу такие вещи, как «Запустить браузер и перейти на http://testsite/TestPage.aspx - ввести текст« abc »в поле формы с идентификатором« def »- подтвердить новую страницу содержит текст« xyz »
Каждый тест выполняется аналогично нашим испытаниям ванильного блока, но с важным исключением: любые изменения, внесенные Selenium, выполняются в совершенно другом потоке/приложении, и поэтому мы не можем (я думаю, что мы не могут, по крайней мере) откатить их обратно в тестовом режиме.
Нам еще предстоит найти подходящее решение. Сейчас мы находимся в точке, где мы используем SqlCommand для выполнения инструкции sql для резервного копирования базы данных, а затем в конце теста мы устанавливаем базу данных на одного пользователя, отбрасываем текущую db и восстанавливаем старая копия - это меньше, чем идеально, потому что это эффективно убивает приложение, которое было прикреплено к БД, и требует от нас снова повторной инициализации приложения.
Это проблема, которая была решена раньше? Любые советы были бы замечательными.
Спасибо!
Thanks Stefan, Это, кажется, лучшее решение - мы прибегали к простому усечению столов и повторной загрузке светильники после каждого теста, что на самом деле не *, что * налогообложение, и кажется, что он работает хорошо. Еще раз спасибо! – matt
Усечение на оракуле довольно быстро, потому что вы не можете отменить эту операцию. Сценарии в нашей ситуации легки, скрипты уже доступны, нам не нужно поддерживать что-то еще. –
Этот скрипт запускается перед каждым тестовым методом или тестовым случаем? Я бы предположил, что каждый тестовый метод ... Также как работает этот скрипт? У вас есть API-интерфейс службы обслуживания в конце? – HDave