2011-07-27 14 views
0

Powershell 2.0でテスト目的でPSUnitを使用しています。私のテストはデータベースサーバーに接続する必要があるので、サーバーとデータベース名をテストスクリプトに渡すことができます。これにより、開発者はローカルデータベースを使用してローカルマシン上でテストスクリプトを実行できると同時に、サーバー上でテストスクリプトを実行できるようになります。データベースは、環境によっても変わることがあります。PSUnitテストスクリプトにパラメータを渡すにはどうすればよいですか?

PSUnit.Runスクリプトでは、テストスクリプト名にパラメータを含めることができないようです。私は何かを見逃しましたか?このための回避策はありますか?

ありがとうございます!

答えて

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" 
} 

あなたが元のバージョンにするたびに、テスト・スクリプト(複数可)を上書きすることを忘れないように持っている、それ以外の場合は、あなたが使用する値が含まれます最後の実行でタグの代わりに値を変更することはできません。

0

は、なぜあなたは自分のテストケースでこれらを使用&「profile.ps1」ファイルに2つの変数([string]$ServerName & [string]$TargetDatabaseName)は含まれません。これらはそこで利用でき、いつでもps1ファイルで設定することができます。

これは、このタスクのために別のスクリプトを書くよりも、より直感的に簡単です。&

このような情報をPowerShellプロファイルに追加するだけです。

関連する問題