C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2008/04/03 01:27
ビルド自動化のために。
NUnit を使用して記述されたユニットテストを実行する関数。
この関数は内部で Invoke-Process 関数を使用する。


[ パラメータ ]
testAssemblyPaths
 ユニットテストアセンブリのパスの配列。

xmlOutputDirectoryPath
XML 出力ファイルの出力先ディレクトリのパス。

version
NUnit のバージョン。

timeoutMilliseconds
プロセスの実行時間に対するタイムアウト値 (単位:ミリ秒)。
無制限に待機する場合、-1 または Int32.MaxValue を指定。
省略した場合は -1。


[ 戻り値 ]
戻り値については Invoke-Process 関数を参照。


[ Invoke-NUnit ]
function global:Invoke-NUnit
{
    param ([string[]] $testAssemblyPaths, [string]$xmlOutputDirectoryPath, [string]$version, [int]$timeoutMilliseconds = [System.Threading.Timeout]::Infinite)
    trap { break; }
   
    if ("$testAssemblyPaths".Length -eq 0) { throw "引数 testAssemblyPaths が null または空の配列です。"; }
    if ([string]::IsNullOrEmpty($xmlOutputDirectoryPath)) { throw "引数 xmlOutputDirectoryPath が null または空の文字列です。"; }
    if ([string]::IsNullOrEmpty($version)) { throw "引数 version が null または空の文字列です。"; }
   
    $testAssemblyPathsText = [string]::Empty;
    $testAssemblyPaths | % { $testAssemblyPathsText += "`"$_`" "; };
   
    $nunitConsolePath = "$Env:ProgramFiles\NUnit $version\bin\nunit-console.exe";
    $nunitConsoleArgs = "$testAssemblyPathsText /xml=`"$xmlOutputDirectoryPath\TestResult.xml`" /nologo /nodots";
   
    return Invoke-Process $nunitConsolePath $nunitConsoleArgs $timeoutMilliseconds;
}



[ 使用例 ]
$testAssemblyPaths =
    @(
        "C:\work\Hoge\Project1.Test\bin\Release\Project1.Test.dll",
        "C:\work\Hoge\Project2.Test\bin\Release\Project2.Test.dll"
    );
$xmlOutputDirectoryPath = "C:\work\Hoge";
$result = Invoke-NUnit $testAssemblyPaths $xmlOutputDirectoryPath "2.4.6";
if (!$result.IsSuccess)
{
    Write-Host "ユニットテストが失敗しました。" -ForegroundColor "Red";
}





【 ダウンロード 】
自作の PowerShell 関数は、以下の記事からまとめてダウンロードできます。

YokoKen.PowerShell.Scripts











トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/207-ecde61b4