无法在Powershell中使用参数正确运行MSTest

时间:2016-02-14 18:27:26

标签: .net powershell mstest

我正在尝试在Powershell中运行MSTest。传递的选项之一是/testcontainer,可以多次传递。

在我的脚本中,我需要构建选项字符串,因为我可以将许多测试容器传递给脚本,因此这就是我所做的:

param(
  [string[]] $TestContainers = @(
    'C:\Users\myuser\MyProject\test\Test1\bin\Debug\Test1.dll', 
    'C:\Users\myuser\MyProject\test\Test1\bin\Debug\Test2.dll', 
    'C:\Users\myuser\MyProject\test\Test1\bin\Debug\Test3.dll', 
    'C:\Users\myuser\MyProject\test\Test1\bin\Debug\Test4.dll'
  )
);

$TestContainersOptions = @();
foreach ($TestContainer in $TestContainers)
{
  $TestContainersOptions += "/testcontainer:'$TestContainer'";
}

$MSTestPath = "C:\Program...\MsTest.exe"

& $MSTestPath $TestContainersOptions;

当我运行脚本时,我得到:

  

Microsoft(R)测试执行命令行工具版本14.0.23107.0   版权所有(c)Microsoft Corporation。保留所有权利。

     

不支持给定路径的格式。对于切换语法,请键入   “MSTest / help”

怎么办?

1 个答案:

答案 0 :(得分:1)

"中的每个路径括起来(双引号的转义序列只有两个,""):

$TestContainersOptions = foreach ($TestContainer in $TestContainers)
{
    "/testcontainer:""$TestContainer"""
}

如果将foreach循环的输出直接分配给变量(如上所示),则不必事先将其声明为数组