我正在实现一组脚本来管理备份文件和还原。脚本基于本文:http://www.solidq.com/sqj/Documents/2010%20September%20Issue/SQJ_003_pag._30-41.pdf
我想围绕脚本开发单元测试。我对使用诸如Pester或PSUnit的框架感兴趣
我的问题是我不明白我应该在测试中寻找什么。我是单元测试的新手,我阅读的大部分内容都依赖于模拟文件,使用函数对其进行更改以及验证是否可以从文件中读取期望的值。
我将构建的功能以某种只读方式与一组备份文件交互。我的第一个倾向是用几个文件创建一个静态目录,并将其与我的测试一起存储。由于代码仅从文件读取,因此测试目录将始终保持不变。
这将需要将这些备份文件存储在我不喜欢的源代码管理中。我也不认为这符合单元测试的真正精神,但是我不确定是否有更好的方法。任何建议将不胜感激。
最佳答案
我在CodePlex项目SQL Server Powershell Extensions的某些工作中使用了PSUnit
在源代码区域中检查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框架概念的信息。
关于sql-server - Powershell SMO Restore脚本的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13496420/