Могу ли я интегрировать Redgate SQL Test напрямую с teamcity, чтобы получить покрытие кода

#teamcity #code-coverage #redgate #tsqlt

#teamcity #покрытие кода #redgate #tsqlt

Вопрос:

Я приобрел тест Redgate SQL, мне нужно интегрировать его с Teamcity.

Могу ли я достичь этого без какого-либо другого лицензионного программного обеспечения от Redgate.

Ответ №1:

tSQLt — это тестовая среда, которую использует SQLTest. Он имеет открытый исходный код, не зависит от Redgate и хорошо интегрируется с Teamcity. Фактически, в прошлом я запускал конвейер CI для самого tSQLt в Teamcity.

Найдите «tSQLt Teamcity» в вашей любимой поисковой системе. Вы также можете использовать модульное тестирование базы данных Using SQL Test с помощью TeamCity Continuous Integration by Dave Green в качестве отправной точки.

Но чтобы ответить на ваш вопрос: вам не нужны другие платные инструменты, чтобы заставить это работать.

(Примечание: эта статья выше была написана до SQL Cover. SQL Cover, как и tSQLt, имеет открытый исходный код, и его тоже можно использовать без SQL Test или других инструментов Redgate. (См., Например, Эту статью самого Эда.) Есть некоторые свидетельства того, что люди это делали, например, этот твит Дэвида из Redgate, но только сейчас я не смог найти никакой полной документации.)

Ответ №2:

Следующий код PowerShell показывает, как этого добиться с помощью Redgate SQL Change Automation, управляющей тестами (взято из документации SCA). Там, где говорится: «Вместо этого можно использовать любой процесс тестирования, который использует код», вы можете заменить эту строку инструкциями PowerShell, необходимыми для прямого выполнения tSQLt.RunAll .

 # If running your PowerShell script from a build tool, pass in these variables as parameters
$server='yourServerinstance'
$database='yourDatabase'
 
Add-Type -Path .SQLCover.dll
$connectionString = "server=$server;initial catalog=$database;integrated security=sspi"
$coverage = new-object SQLCover.CodeCoverage($connectionString, $database, $true, $false)
 
# This starts SQLCover. It uses XEvents to monitor activity on the database.
$coverage.Start()
 
# Between the Start and Stop, the tSQLt tests are run. 
# Any testing process that exercises the code (for example, NUnit, Selenium) can be used instead.
$testResults = $connectionString | Invoke-DatabaseTests 
 
# We stop SQLCover now that we've run our tests.
$coverageResults = $coverage.Stop()
 
# Generate a basic single-page code coverage report
$coverageResults.Html() | Out-File SQLCoverResults.html