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

时间:2012-01-10 20:28:06

标签: mstest

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

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

这样可以正常工作,但我不希望保留此运行中的工件。似乎MSTest留下了副本。对我来说,他们在C:\dev\TestResults\目录。

我调查了一些事情:

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

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

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

1 个答案:

答案 0 :(得分: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
}