Тесты интеграции базы данных в Visual Studio Online
Мне нравится новый инструмент Build в Visual Studio Online. Позволяет мне делать почти все, что я делаю на локальном сервере сборки. Но одна вещь, которую мне не хватает, - это тесты базы данных интеграции: для каждого запуска сборки я заново создаю тестовую базу данных из сценариев и запускаю тесты DB против нее.
В Visual Studio Online я не могу найти какой-либо экземпляр базы данных, доступный для моих нужд.
Я попытался создать базу данных Azure SQL (через PowerShell) для каждого запуска сборки, а затем удалить ее после завершения сборки. Но для создания базы данных требуется навсегда (по сравнению с остальной частью процесса сборки). И даже когда сценарии PowerShell сделаны, база данных еще не готова принимать запросы - мне нужно постоянно проверять, действительно ли она готова. Таким образом, этот сценарий становится слишком сложным и ненадежным.
Существуют ли другие варианты выполнения тестов интеграции базы данных (SQL Server) в Visual Studio Online?
Обновление: я думаю, что я не очень понимаю, что мне нужно - мне нужен бесплатный (очень дешевый) экземпляр SQL Server для подключения к этому запуску на агенте сборки в VSO. Что-то вроде SQL Express или SQL CE или LocalDB, где я могу подключиться и повторно создать базу данных для запуска тестов С#. Повторное создание базы данных или запуск тестов не проблема, наличие допустимой строки подключения является проблемой.
Обновление Oct 2016: я писал о том, как я интегрирую тестирование в VSTS
Ответы
Ответ 1
Серверы сборки TFS поставляются с предустановленными серверами MSSQL Server 2012 и MSSQL Server 2014 LocalDB.
Источник: Служба TFS - Программное обеспечение на сервере размещенной сборки
Поэтому просто добавьте следующий однострочный вкладыш в свое решение post-build для создания экземпляра LocalTB MYTESTDB для ваших нужд. Это позволит вам подключиться к (LocalDB)\MYTESTDB
чтобы выполнить тесты интеграции базы данных очень хорошо.
"C:\Program Files\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe" create "MYTESTDB" 12.0 -s
Источник: утилита SqlLocalDB
Ответ 2
Существует расширение "Redgate SQL CI" для VSTS на рынке, который вы можете попробовать. См. Эту ссылку для получения дополнительной информации:
В рамках расширения есть четыре доступных действия:
• Build - создает вашу базу данных в пакете NuGet из папки сценариев базы данных в исходном управлении
• Test - запускает тесты tSQLt по базе данных
Синхронизация - синхронизация пакета с базой данных интеграции
• Опубликовать - публикация пакета в потоке NuGet
Ответ 3
Вы должны нажать интеграционные тесты (что-нибудь, что требует экземпляр вашего приложения) для запуска в среде как часть вашего конвейера выпуска.
В вашей сборке просто выполняйте компиляцию и модульные тесты. Если это конкурирует с вами, вы должны инициировать выпуск и как часть вашего конвейера выпуска, первым шагом должно быть развертывание вашей базы данных на лазурном сервере.
Вместо того, чтобы пытаться использовать SQL Azure, вы можете создать виртуальную машину в лазурной области, которая уже существует, на которой установлен SQL-сервер. Используйте удаленные сценарии для развертывания базы данных и выполнения ваших тестов.
Даже если вы не используете средства выпуска для выпуска, это сработает для вас.