2016-04-26 2 views
0

Мы используем RedGate в сочетании с SQL Test (tSQLt). Для модульного тестирования мы устанавливаем структуру в каждой базе данных.tSQLt Object Organization

Есть ли способ использовать структуру tSQLt таким образом, чтобы ваши модульные тесты и объекты инфраструктуры могли находиться в одном центральном месте, которое затем может использоваться несколькими базами данных?

Мы также используем RedGate SQL Source Control с TFS в качестве нашего репозитория для отслеживания изменений схемы. Эти изменения повышаются в следующем порядке: Разработка -> Тест -> Производство.

Излишне говорить, что добавление рамки в сочетании с самими тестами представляет собой большое количество новых объектов SQL (таблицы, хранимые процедуры и т. Д.) В наших базах данных. В идеале мы хотели бы, чтобы эти объекты находились только в разработке и тестировании и избегали загромождения нашей производственной базы данных. Мы могли бы пропустить слияние изменений tSQLt с продукцией, но тогда у нас были бы безмоментные изменения, которые бы сидели в исходном контрольном окружении тестовой среды до конца времени.

Любые мысли о решении этой проблемы?

+0

Это поможет узнать, как вы в настоящее время рекламируете свои изменения от Dev до Test to Production. Используете ли вы инструмент или автоматизированный процесс? –

+0

Привет, Дэвид, спасибо за ваш ответ. В настоящее время мы используем TFS для ручного продвижения изменений с Dev на Test. Это делается с помощью Visual Studio в Source Control Explorer. –

+0

Под «TFS» вы имеете в виду инструмент сравнения схем в Visual Studio? –

ответ

0

В настоящее время нет способа установить tSQLt в отдельной базе данных. Я начал процесс создания агностики базы данных tSQLt, но это в основном полная переписывание, поэтому потребуется некоторое время.

В то же время, вы можете исключить tSQLt из SQL Source Control: https://redgate.uservoice.com/forums/39019-sql-source-control/suggestions/4901910-faster-way-to-exclude-all-tsqlt-content

+0

Обратите внимание, что инструкции по этой ссылке устарели. В последних версиях SQL Source Control вы можете изменить этот параметр на вкладке «Настройка» для базы данных. См. Здесь: https://documentation.red-gate.com/display/SOC4/Comparison+options – James

+0

Спасибо за ваш ответ Себастьян и Джеймс.Я буду рассматривать этот вариант как последнее средство, я полагаю, потому что мы обеспокоены сохранением истории изменений для модифицированных модульных тестов. Таким образом, удаление ссылок из источника управления может быть тем, что мы должны сделать сейчас, даже если оно не является идеальным. –

0

Если вы все еще хотите, чтобы ваши тесты в системе управления версиями, но не хотят, чтобы продвигать их на более высоких условиях, то есть по умолчанию в Redgate's DLM Automation Suite. Вы можете использовать один из плагинов сервера сборки (например, TeamCity или TFS для сборки/тестирования, затем Octopus Deploy для выпуска) или сделать все это в PowerShell с помощью SQL Release. https://documentation.red-gate.com/display/SR1/SQL+Release+documentation

Если у вас есть лицензия на SQL Toolbelt от Redgate, возможно, вы уже имеете лицензию на инструменты автоматизации (это изменение для предыдущего лицензирования); http://www.red-gate.com/products/sql-development/sql-toolbelt/#automation

+0

Спасибо за ответ Кас, я посмотрю на это. Я считаю, что мы в настоящее время лицензированы для SQL Developer Suite. Просто взглянув на страницу RedGate на этом продукте, ее неясно, включена ли DLM Automation в наш пакет. –

+0

Я только что подтвердил, что DLM Automation не входит в комплект разработчика, и это довольно крутая цена для нас, чтобы заплатить только за использование этой функции, однако я проверю с нашей командой DBA, чтобы узнать, обновлена ​​ли их лицензия. Если нет, я предполагаю, что DLM Automation - единственный способ? –

1

Как вы используете SQL Source Control для управления изменениями в базе данных, проверка правильности ваших тестов tSQLt. Если вы хотите убедиться, что они не попадают в стадию или производство, вам необходимо убедиться, что инструменты, которые вы используете для продвижения изменений, исключают тесты tSQLt. Если вы используете Redgate SQL Compare для этого, используйте опцию «Игнорировать рамки и тесты tSQLt». Дополнительную информацию см. В разделе product documentation. Если вы используете другой инструмент или процесс, отправьте комментарий, и я исправлю этот ответ.