Тесты интеграции базы данных в 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-сервер. Используйте удаленные сценарии для развертывания базы данных и выполнения ваших тестов.

Даже если вы не используете средства выпуска для выпуска, это сработает для вас.