0

我在 Powershell 2.0 中使用 PSUnit 进行测试。因为我的测试需要连接到数据库服务器,所以我希望能够将服务器和数据库名称传递到测试脚本中。这将允许开发人员在本地计算机上使用本地数据库运行测试脚本,同时可以在服务器上运行它。数据库也可能根据环境而改变。

PSUnit.Run 脚本似乎不允许您在测试脚本名称中包含参数。我错过了什么吗?有解决方法吗?

谢谢!

4

2 回答 2

0

我能找到的唯一方法是在测试脚本的开头包含标签,然后搜索并替换正确的值来代替这些标签。例如,在我的情况下,我的测试脚本在脚本顶部包含以下代码:

[string]$ServerName=<ServerName>
[string]$TargetDatabaseName=<TargetDatabaseName>

那是文字代码。然后,在我调用测试的脚本中,我包含了以下代码:

foreach ($testPSScript in Get-ChildItem "$testScriptDir\*.ps1") {
    (Get-Content $testPSScript.FullName) |
    ForEach-Object {$_ -replace "<ServerName>", "'$ServerName'"} |
    ForEach-Object {$_ -replace "<TargetDatabaseName>", "'$DatabaseName'"} |
    Set-Content $testPSScript.FullName -Force

    PSUnit.Run.ps1 -PSUnitTestFile "$testPSScript"
}

您必须记住每次都用原始版本覆盖您的测试脚本,否则它将包含您在上次运行中使用的值而不是标签,并且您将无法更改这些值。

于 2011-08-03T16:18:47.093 回答
0

为什么不在“profile.ps1”文件中包含 2 个变量 ( [string]$ServerName& [string]$TargetDatabaseName) 并在测试用例中使用它们。这些将在那里可用,您可以随时在 ps1 文件中配置它们。

这似乎比为此任务编写单独的脚本更容易和更直观。

只需将任何此类信息附加到 PowerShell 配置文件即可。

于 2012-01-17T08:27:15.133 回答