1

我正在创建一个脚本,该脚本将在开发服务器上执行 tSQLt 单元测试,然后才能进行部署 o QA - 这是持续集成的一部分......

这是我的 Powershell 脚本:

param(
[Parameter(Mandatory=$true)][string]$DatabaseName
, [Parameter(Mandatory=$true)][string]$UserName
, [Parameter(Mandatory=$true)][string]$Password

)

$filelocation = "c:\jenkinsdrops"
$DatabaseServer = "Server\DEV"

Invoke-Sqlcmd `
-Query "EXEC tSQLt.RUNALL" `
-ServerInstance $DatabaseServer `
-Database $DatabaseName `
-U $UserName `
-Password $Password `
-Verbose 4>"$Filelocation\$DatabaseName tSQLt Report.txt"`

控制台中的输出是:

在此处输入图像描述

并且输出到文本文件的(详细)结果如下所示: 在此处输入图像描述

在我们触发下一步之前,我们必须确保所有的单元测试都通过了,所以这个词Failure不能出现在输出结果文件中,failed也不能出现在控制台输出中。

我该如何检查,或者是否有更好、更正确的方法来做到这一点?

4

1 回答 1

0

只是从您的控制台输出中假设并且当前无法对其进行测试,但是 try-catch 块可以工作。

try {
    Invoke-Sqlcmd ...
}
catch {
    # Output a error and exit script?
}

最终您需要向 Invoke-Sqlcmd 添加 -ErrorAction Stop。

于 2017-09-15T09:49:27.397 回答