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 に答える