如何从 powershell 中的命令行启动负载测试 运行?

How to launch a loadtest run from command line in powershell?

我需要能够使用 powershell

启动负载测试 运行

目前,使用以下代码

$test = "D:\LPT\abc.loadtest"
$fs = New-Object -ComObject Scripting.FileSystemObject
$f = $fs.GetFile("C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\mstest.exe")
$mstestPath = $f.shortpath   
$arguments = " /testcontainer:" + $test + " /testsettings:D:\LPT\RemoteExecution.testsettings" + " /resultsfile:D:\LPT\TestResults\Results.trx"

Invoke-Expression "$mstestPath $arguments" 

在 运行 之后,在 ps 控制台中显示 正在加载

D:\LPT\abc.loadtest...
Starting execution...

但在Visual studio中,在测试结果中

这样显示失败。有没有办法成功地使用 powershell + cmd 行 运行 负载测试?

使用 VS2017,PS4

最初我在某处读到说添加这个会有帮助:

[DeploymentItem("Microsoft.Practices.Prism.dll")]

添加此代码后 运行 正常,负载测试开始 运行ning 但我仍然不断收到错误

"Test Run deployment issue: The assembly or module log4net directly or indirectly referenced by the test container 'd:\lpt\bin\release\YYY.dll"

我认为问题主要在于参数的传递方式。一位同事建议 $Arguments 是一个非常敏感的变量,应该仔细编写

然后参数写得更正确,$Arguments 更改为这个,[DeploymentItem] 被删除,但即使没有这个代码片段,下面的代码也能工作:

使用 Invoke-Expression 启动 LoadTest

$FileSystem = New-Object -ComObject Scripting.FileSystemObject
$File = $FileSystem.GetFile( $MsTestPath )
$MsTestPath = $File.shortpath

$Arguments = "/testcontainer:$TestMethodPath /testsettings:$TS /resultsfile:$Res"            
Invoke-Expression "$MsTestPath $Arguments" 

最后,从开始到结束跟踪负载测试的更好方法是使用 Start-Process,因此下面的 代码对我和 非常有效returns 0 如果负载测试 运行 成功或任何其他值如果出现任何问题:

使用 Start-Process 启动 LoadTest

$FileSystem = New-Object -ComObject Scripting.FileSystemObject
$File = $FileSystem.GetFile( $MsTestExePath )
$MsTestPath = $File.shortpath

$Arguments = "/testcontainer:$TestMethodPath /testsettings:$TestSettingsPath /resultsfile:$ResultsFile"

$Result = ( Start-Process $MsTestExePath -ArgumentList $Arguments -NoNewWindow -Wait -PassThru )

$Result.ExitCode - provides pass/fail info