からMSTest.exeを実行しようとしていますC:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE
。さらに、現在のディレクトリにあるすべてのアセンブリを取得し、それらを個別の/testcontainer引数として設定しています。PowerShellが文句を言わずにこれを行う方法を理解することはできません。
$CurrentDirectory = [IO.Directory]::GetCurrentDirectory()
$MSTestCall = '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"'
foreach($file in Get-ChildItem $CurrentDirectory)
{
if($file.name -match "\S+test\S?.dll$" )
{
$MSTestArguments += "/TestContainer:" + $file + " "
}
}
$MSTestArguments += " /resultsFile:out.trx"
$MSTestArguments += " /testsettings:C:\someDirectory\local64.testsettings"
Invoke-Expression "$MSTestCall $MSTestArguments"
このコードから得られるエラーは次のとおりです。
Invoke-Expression:「/」演算子の右側に値式を指定する必要があります。
名前にスペースが含まれていないディレクトリでmstest.exeを呼び出そうとしても、このエラーは発生しません(追加の「」は必要ありません)。
使ってみると&
、
&$MSTestCall $MSTestArguments
$ MSTestArgumentsを単一の引数として渡し、MSTestはこれを即座にスローします。提案?