我正在创建一个脚本,它将在部署之前在Dev服务器上执行tSQLt Unit测试,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
不能出现在控制台输出中
我该如何检查,或者是否有更好,更正确的方法来执行此操作?
答案 0 :(得分:0)
只是从您的控制台输出中假设并且当前无法对其进行测试,但是try-catch块可以正常工作。
try {
Invoke-Sqlcmd ...
}
catch {
# Output a error and exit script?
}
最终你需要在Invoke-Sqlcmd中添加-ErrorAction Stop。