Powershell SMO还原脚本的单元测试

时间:2012-11-20 18:07:32

标签: sql-server powershell smo unit-testing

我正在实现一组脚本来管理备份文件和恢复。这些脚本基于这篇文章:http://www.solidq.com/sqj/Documents/2010%20September%20Issue/SQJ_003_pag._30-41.pdf

我想围绕脚本开发单元测试。我对使用PesterPSUnit

等框架感兴趣

我的问题是,我不明白我应该在测试中寻找什么。我是单元测试的新手,我读过的大部分内容都依赖于模拟文件,用函数更改它们,并验证你是否可以从文件中读取你期望的值。

我将构建的函数以一些只读方式与一组备份文件进行交互。我的第一个倾向是创建一个包含几个文件的静态目录,并将其与我的测试一起存储。由于代码只从文件中读取,因此测试目录将始终保持不变。

这需要将这些备份文件存储在源代码管理中,我不喜欢。我也认为这不符合单元测试的真正精神,但我不确定是否有更好的方法。任何建议都会非常感激。

1 个答案:

答案 0 :(得分:1)

我在CodePlex项目的一些工作中使用了PSUnit SQL Server Powershell Extensions

查看源区域中的PSUnit测试脚本: http://sqlpsx.codeplex.com/SourceControl/changeset/view/ed45217f200e#Test%20Scripts%2fTest.SQLServer.ps1

Test.SQLServer.ps1脚本中有一个测试函数用于测试invoke-sqlbackup函数:

##function Test.Invoke-SqlBackup([switch] $Skip)
function Test.Invoke-SqlBackup([switch] $Category_InvokeSql)
{
    #Arrange
    $server = get-sqlserver "$env:computername\sql2k8"
    #Act
    Invoke-SqlBackup "$env:computername\sql2k8" "pubs"  "$($server.BackupDirectory)\pubs.bak" -force
    $Actual = $?
    Write-Debug $Actual
    #Assert
    Assert-That -ActualValue $Actual -Constraint {$ActualValue}
}

对于任何基于xUnit的框架,您将遵循安排,行动,断言。可能还有一个拆卸动作来执行后清理任务。至于单元测试一般而不是专注于PSUnit或Pester。阅读xUnit / nUnit框架概念。