【问题标题】:How do I instruct MSTest to remove all testing artifacts after a test run?如何指示 MSTest 在测试运行后删除所有测试工件?
【发布时间】:2012-02-16 20:14:51
【问题描述】:

我正在从命令行对我们的测试程序集运行 MSTest:

mstest /testcontainer:C:\dev\UnitTests\bin\Debug\UnitTests.dll

这工作正常,但我不希望这次运行的工件保留。似乎 MSTest 留下了一个副本。对我来说,它们位于C:\dev\TestResults\ 目录中。

我调查了一些事情:

  • .testsettings 文件中的配置。在那里找不到任何东西。
  • 运行在.testsettings 文件中指定的清理脚本。这可行,但我怎样才能找到 MSTest 用于工件的输出位置?
  • 在工具 > 选项 > 测试工具 > 测试执行中使用 Visual Studio 限制旧测试结果的数量。这在使用 mstest.exe 时不起作用 - 无论如何也不起作用,因为我想为我们团队中的其他开发人员编写脚本。

如何在运行完成后删除测试运行工件?

编辑:另外,我会接受一个答案,该答案将使用开源测试运行工具运行我们的 MSTest 测试。我只想编写脚本,伙计。

【问题讨论】:

    标签: mstest


    【解决方案1】:

    MSTest 在 $pwd 中创建 TestResults 目录。

    function global:runtests()
    {
        $mstest = Join-Path $env:VS100COMNTOOLS "..\IDE\mstest.exe" -Resolve
    
        $resultsDir = Join-Path $pwd "TestResults"
    
        $testDll = Join-Path $solutionScriptsContainer "..\UnitTests\bin\Debug\UnitTests.dll" -Resolve          
        $output = & $mstest /testcontainer:$testDll 
        $o = [regex]::match($output, "^.*(Summary.*)Results file.*$")
        $mstflag = "MSTest:"
        $op =  $mstflag +=  $o.groups[1].value
    
        Write-Host $op
        Write-Host "Deleting $resultsDir"
    
        remove-item $resultsDir -force -recurse
    }
    

    【讨论】:

    • 你也可以追加一个简单的rd批处理命令:mstest /testcontainer:C:\dev\UnitTests\bin\Debug\UnitTests.dll&&rd /s /q "C:\dev\TestResults"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 2014-08-22
    • 2011-06-05
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    相关资源
    最近更新 更多