Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio VsTest不使用powershell生成的参数运行_Visual Studio_Unit Testing_Powershell_Testing_Jenkins Plugins - Fatal编程技术网

Visual studio VsTest不使用powershell生成的参数运行

Visual studio VsTest不使用powershell生成的参数运行,visual-studio,unit-testing,powershell,testing,jenkins-plugins,Visual Studio,Unit Testing,Powershell,Testing,Jenkins Plugins,我编写了一个简单的powershell脚本,使用stackover和其他地方的一些帮助来生成所有测试DLL列表 { cd "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow" $sourceDirectory = "D:\workspace\SolutionDir" $files = get-childitem $so

我编写了一个简单的powershell脚本,使用stackover和其他地方的一些帮助来生成所有测试DLL列表

{

    cd "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow"
    $sourceDirectory = "D:\workspace\SolutionDir"
    $files = get-childitem $sourceDirectory -recurse -include "*.Test*.dll" | select -expand FullName | where {$_ -like "*.Test*.dll"}
    foreach ($file in $files)
    {
        $cFiles = $cFiles + $file.trim() + " "
    }
    $cFiles = $cFiles -replace ".{}$" #drop last 1 chars

    echo $cFiles

    $argumentList = @("$cFiles", "/framework:framework45", "/platform:x64")

    vstest.console.exe $argumentList
}
但我犯了个错误

错误:测试源文件“D:\workspace\SolutionDir\Proj1.test\bin\x64\Release\Proj1.test.dll D:\workspace\SolutionDir\Proj2.test\bin\x64\Release\Proj2.test.dll 未找到D:\workspace\SolutionDir\Proj3.Test\bin\x64\Release\Proj3.Test.dll”

当我回显参数列表时,删除空格并手动键入,然后将命令复制回powershell,它就可以工作了。我怀疑这与字符串的编码有关。但我不知道如何改变它或使它工作


非常感谢您提供的任何帮助。

我认为问题在于您的vstest需要将每个文件名作为参数,但您将所有文件作为1传递。你能试试这个吗

{

cd "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow"
$sourceDirectory = "D:\workspace\SolutionDir"
$files = get-childitem $sourceDirectory -recurse -include "*.Test*.dll" | select -expand FullName | where {$_ -like "*.Test*.dll"}
$argumentList = @()

foreach ($file in $files)
{
    $argumentList += $file
}

$argumentList += "/framework:framework45"
$argumentList += "/platform:x64"

vstest.console.exe $argumentList
}
如果这对您不起作用,那么您可能不应该解析get childitem的结果

试试这个

{

cd "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow"
$sourceDirectory = "D:\workspace\SolutionDir"
$files = get-childitem $sourceDirectory -recurse | where {$_ -like "*.Test*.dll"}
$argumentList = @()

foreach ($file in $files)
{
    $argumentList += $file.FullName
}

$argumentList += "/framework:framework45"
$argumentList += "/platform:x64"

vstest.console.exe $argumentList
}

这不是一个答案,但它可以教你如何回答自己的问题。