我可以将 Redgate SQL Test 直接与 teamcity 集成以获得代码覆盖率吗

Posted

技术标签:

【中文标题】我可以将 Redgate SQL Test 直接与 teamcity 集成以获得代码覆盖率吗【英文标题】:Can I integrate Redgate SQL Test directly with teamcity to get code coverage 【发布时间】:2021-03-13 08:33:17 【问题描述】:

我已经购买了 Redgate SQL Test,我需要与 Teamcity 集成。

我可以在没有任何其他 Redgate 许可软件的情况下实现它吗?

【问题讨论】:

【参考方案1】:

tSQLt 是 SQLTest 使用的测试框架。它是开源的,独立于 Redgate,并与 Teamcity 很好地集成。事实上,我过去曾经在 Teamcity 上为 tSQLt 本身运行 CI 管道。

在您喜欢的搜索引擎中搜索“tSQLt Teamcity”。您也可以使用 Dave Green 的 Using SQL Test Database Unit Testing with TeamCity Continuous Integration 作为起点。

但要回答您的问题:您不需要其他付费工具来完成这项工作。

(注意:上面那篇文章是在 SQL Cover 之前写的。SQL Cover 和 tSQLt 一样,是开源的,它也可以在没有 SQL Test 或其他 Redgate 工具的情况下使用。(例如参见 Ed 本人的 this article。 ) 有一些证据表明人们已经这样做了,比如 Redgate 的 David 的 this tweet,但刚才我找不到任何完整的文档。)

【讨论】:

【参考方案2】:

以下 PowerShell 代码展示了如何使用 Redgate 的 SQL 变更自动化驱动测试来实现这一点(取自 SCA documentation)。如果它说“可以使用任何执行代码的测试过程”,您可以用直接执行 tSQLt.RunAll 所需的 PowerShell 语句替换这一行。

# If running your PowerShell script from a build tool, pass in these variables as parameters
$server='yourServer\instance'
$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

【讨论】:

以上是关于我可以将 Redgate SQL Test 直接与 teamcity 集成以获得代码覆盖率吗的主要内容,如果未能解决你的问题,请参考以下文章

我可以将 Flyway 与 SQL Server 加密一起使用吗?

SQL 数据库未链接到 Redgate 源代码控制中的本地 svn 存储库

如何在控制台执行时隐藏 Redgate sql 比较许可序列号?

如何使用 RedGate docker 生成迁移脚本?

SQL Compare数据库版本比较工具

删除sql统计信息可以吗?