我可以通过传递以空格分隔的文件名来成功地运行单元测试。例如:
>vstest.console.exe a.dll b.dll 但是当我使用PS脚本做类似的事情时
> $TestDlls = Get-ChildItem -Path "Folder" -Filter "Test.*.dll" -Recurse -File
> $JoinedPath = $TestDlls -join " " #Try to join the paths by ' ' ??? Is it a wrong command?
> vstest.console.exe $JoinedPath我有意想不到的事..。
因为$JoinedPath是一个带有引号的字符串,如"a.dll b.dll"
所以vstest.console.exe总是会收到一个"a.dll“(vstest.console.exe "a.dll b.dll")
我不知道如何准确地表达我的问题..。
简而言之,我想使用powershell来模拟命令
vstest.console.exe a.dll b.dll
不
vstest.console.exe "a.dll b.dll“
我是PowerShell的新手,我不知道这是否可能。
发布于 2021-06-13 08:23:59
您可以使用数组来帮助您处理命令行实用程序的参数,特别是当您需要开始指定参数名时。
$TestDlls = Get-ChildItem -Path $Folder -Filter "Test.*.dll" -Recurse # -File is not needed unless you have folders also named Test.*.dll
$VSTestArgs = @()
foreach ($TestDll in $TestDlls) {
$VSTestArgs = $VSTestArgs + $TestDll.FullName
}
& vstest.console.exe $VSTestArgs # & is the call operator.如果必须添加其他参数,则可以在foreach块之后添加它们。
$TestDlls = Get-ChildItem -Path $Folder -Filter "Test.*.dll" -Recurse # -File is not needed unless you have folders also named Test.*.dll
$VSTestArgs = @()
foreach ($TestDll in $TestDlls) {
$VSTestArgs = $VSTestArgs + $TestDll.FullName
}
$VSTestArgs = $VSTestArgs + "/Settings:local.runsettings"
$VSTestArgs = $VSTestArgs + "/Tests:TestMethod1,testMethod2"
$VSTestArgs = $VSTestArgs + "/EnableCodeCoverage"
& vstest.console.exe $VSTestArgs如果参数与参数是分开的,而这个实用程序似乎并非如此,那么您可以像这样将参数和参数相加在一起。
$dotnetArgs = @()
$dotnetArgs = "new"
$dotnetArgs = "classlib"
$dotnetArgs = $dotnetArgs + "--output" + "TestLib"
$dotnetArgs = $dotnetArgs + "--name" + "TestLib"
$dotnetArgs = $dotnetArgs + "--language" + "C#"
& dotnet $dotnetArgshttps://stackoverflow.com/questions/67956083
复制相似问题