sql-server - Powershell SMO Restore脚本的单元测试

标签 sql-server powershell smo unit-testing

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

我想围绕脚本开发单元测试。我对使用诸如PesterPSUnit的框架感兴趣

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

我将构建的功能以某种只读方式与一组备份文件交互。我的第一个倾向是用几个文件创建一个静态目录,并将其与我的测试一起存储。由于代码仅从文件读取,因此测试目录将始终保持不变。

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

最佳答案

我在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/

相关文章:

sql-server - 基于以下示例,交叉应用和内部联接之间的区别

c# - 如何使用 SMO 将数据库传输到新模式?

.net - EnumAvailableSqlServers 返回空列表

sql-server - 如何从SQl SERVER object_id获取SMO对象(例如表)?

sql-server - 新的基数估计器 (SQL Server 2014) 还很遥远

c# - winforms 连接到 SQL Server 的理想设计。

dll - 您可以再次删除 PowerShell 中添加的类型吗?

git - 如何删除 posh-git 窗口标题开头的多余内容?

powershell - 在powershell中从一个范围内生成一个随机数,但不包括1

c# - SQL 加密只返回第一个字符