如何指示MSTest在测试运行后删除所有测试工件



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

mstest /testcontainer:C:devUnitTestsbinDebugUnitTests.dll

这很好,只是我不希望这次运行中的工件保留下来。似乎MSTest留下了一份副本。对我来说,它们在C:devTestResults目录中。

我调查了一些事情:

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

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

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

MSTest在$pwd中创建TestResults目录。
function global:runtests()
{
    $mstest = Join-Path $env:VS100COMNTOOLS "..IDEmstest.exe" -Resolve
    $resultsDir = Join-Path $pwd "TestResults"
    $testDll = Join-Path $solutionScriptsContainer "..UnitTestsbinDebugUnitTests.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
}

最新更新