如何在Powershell中使用VSTEST.CONSOLE.EXE运行mstest

时间:2019-04-22 07:06:46

标签: powershell mstest vstest.console.exe

阅读并尝试了Stack Overflow中的可用帖子后,我问了这个问题。

我正在努力在Powershell中触发MSTEST

这是我的尝试(显然是借助堆栈溢出中可用的帖子)

$testDLL = "C:\Automation\Tests\My.Tests.dll"
$fs = New-Object -ComObject Scripting.FileSystemObject
$f = $fs.GetFile("C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe")
$vstestPath = $f.shortpath   
$arguments = " " + $testDLL + ' /TestCaseFilter:"TestCategory=FunctionalTests"'
Write-Host $arguments
& $vstestPath $arguments

控制台输出:

    PS C:\Users\myuser\Desktop\Powershell scripts> .\exp5.ps1
     C:\Automation\Tests\My.Tests.dll /TestCaseFilter:"TestCategory=FunctionalTests"
    Microsoft (R) Test Execution Command Line Tool Version 15.9.1
    Copyright (c) Microsoft Corporation.  All rights reserved.

    VSTEST~1.EXE : The test source file "C:\Automation\Tests\My.Tests.dll /TestCaseFilter:TestCategory=FunctionalTests" provided was not found.
    At C:\Users\myuser\Desktop\Powershell scripts\exp5.ps1:7 char:1
    + & $vstestPath $arguments
    + ~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (The test source... was not found.:String) [], RemoteException
        + FullyQualifiedErrorId : NativeCommandError

    Usage: vstest.console.exe [Arguments] [Options] [[--] <RunSettings arguments>...]]

    Description: Runs tests from the specified files.

    Arguments:

    [TestFileNames]
          Run tests from the specified files. Separate multiple test file names
.
.
.
. etc

如果我在正常的Windows cmd提示符下运行,则测试可以正常运行,但是当我尝试从Powershell触发时遇到错误。

有人可以帮我解决我脚本的问题吗?

如果我的脚本很复杂或没有意义,请原谅我,因为我是Powershell的新手。我的目标是在Octopus Deploy步骤过程中使用上面的powershell脚本来触发测试。如果有人知道简单或更好的方法,请分享...

谢谢

1 个答案:

答案 0 :(得分:0)

谢谢大家,我使用下面的代码来使其正常工作。

$command = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"
$arguments = @('C:\Automation\Tests\My.Tests.dll', '/TestCaseFilter:"TestCategory=FunctionalTests"')
& $command $arguments

@Leee_Dailey-抱歉造成混乱。我只是想使用Powershell命令从“运行脚本”模板的Octopus Deploy(OD)“内联源代码”触发测试。我已经开始在PowerShell中进行实验,以使其在OD中使用之前可以在本地工作。搜索时没有找到直接的答案。我有时间弄清楚了。希望这段代码对某人有帮助。谢谢。