2013-06-04 56 views
7

我試圖從沒有成功PowerShell中的Visual Studio的工具MSTest的執行:調用MSTest的使用PowerShell

$testDLL = "myTest.dll" 
$mstestPath = "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest.exe"  
$arguments = " /testcontainer:" + $testDLL + " /test:UnitTest1" 

Invoke-Expression "$mstestPath $arguments" 

我得到這個錯誤:「稱‘86’不被識別爲cmdlet的名稱,功能,...「 任何想法?謝謝。

編輯:

好吧,這個問題用「&」而不是「援引表達」以及爲每個參數創建分隔的變量,它不適合我只是在這兩個變種一個使用工作得到了解決:

$testDLL = "myTest.dll" 
$mstestPath = "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest.exe"  
$argument1 = "/testcontainer:" + $testDLL 
$argument2 = "/test:UnitTest1" 

& $mstestPath $argument1 
+2

相關:http://stackoverflow.com/questions/3868342/running-an-exe-using-powershell-from-a-directory-with-spaces-in-it –

+0

「C:\ Program Files文件(x86)「有一個空格,以便爲您的字符串添加引號'$ mstestPath ='」C:\ Program Files(x86)\ ... \ IDE \ mstest.exe「'' –

回答

7

我建議在案例中使用&運算符(請參閱評論David Brabant)。

但是,如果您必須使用Invoke-Expression,則可以將$mstestPath轉換爲其短路徑等效項。

$testDLL = "myTest.dll" 
$fs = New-Object -ComObject Scripting.FileSystemObject 
$f = $fs.GetFile("C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest.exe") 
$mstestPath = $f.shortpath 
$arguments = " /testcontainer:" + $testDLL + " /test:UnitTest1" 
Invoke-Expression "$mstestPath $arguments" 
+2

不錯的答案。你有什麼想法如何解析結果? –

+1

使用resultsfile開關將結果導出到trx文件:'/ resultsfile:c:\ temp \ tests.trx'然後您可以解析trx文件:http://dbarrowstechblog.blogspot.com.au/2012/ 08/parsing-mstest-results-trx-files.html?_sm_au_ = iNVjjVLrnLPWRJ0j''或http://www.c-sharpcorner.com/UploadFile/e06010/read-trx-file-from-C-Sharp/ –