Как мне дать команду MSTest удалить все артефакты тестирования после пробного запуска? - PullRequest
4 голосов
/ 11 января 2012

Я запускаю MSTest для нашей тестовой сборки из командной строки:

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

Это отлично работает, за исключением того, что я не хочу, чтобы артефакты из этого прогона остались. Кажется, что MSTest оставляет копию вокруг. Для меня они в каталоге C:\dev\TestResults\.

Я исследовал несколько вещей:

  • Конфигурация в файле .testsettings. Там ничего не смог найти.
  • Запуск сценария очистки, указанного в файле .testsettings. Это будет работать, но как мне найти выходное местоположение, которое MSTest использует для артефактов?
  • Использование Visual Studio для ограничения количества старых результатов теста в меню Инструменты> Параметры> Инструменты тестирования> Выполнение теста. Это не работает при использовании mstest.exe - и все равно не будет работать, так как я хочу написать это для других разработчиков в нашей команде.

Как удалить артефакты тестового запуска после его завершения?

Редактировать: также я бы принял ответ, который будет запускать наши тесты MSTest с использованием инструмента для запуска тестов с открытым исходным кодом. Я просто хочу написать это, чувак.

1 Ответ

1 голос
/ 11 января 2012

MSTest создает каталог TestResults в $ pwd.

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
}
...