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