Как запускать только ранее неудачные тесты с помощью dotnet vstest

У меня есть набор из более чем 10 000 тестов, и иногда я хочу перезапустить только те тесты, которые не удались при предыдущем запуске, используя dotnet vstest CLI.


person lauxjpn    schedule 17.09.2019    source источник


Ответы (1)


Я закончил тем, что использовал следующую команду PowerShell, чтобы снова запустить только ранее неудачные тесты на основе новейшего файла trx в .\TestResults\:

dotnet vstest '.\bin\Debug\netcoreapp3.0\MyTests.dll' /Logger:trx /Tests:"$((Select-Xml -Path (gci '.\TestResults\' | sort LastWriteTime | select -last 1).FullName -XPath "//ns:UnitTestResult[@outcome='Failed']/@testName" -Namespace @{"ns"="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"}).Node.Value | % {$_ -replace '^My\.Long\.And\.Tedious\.Namespace\.', ''} | % {$_ -replace '^(.*?)\(.*$','$1'} | Join-String -Separator ','))"

Помните, что существует ограничение на максимальное количество символов в командной строке, которое может быть легко достигнуто, если многие тесты ранее не прошли. Используйте часть % {$_ -replace '^My\.Long\.And\.Tedious\.Namespace\.', ''}, чтобы избавиться от префиксов пространства имен, если можете.

person lauxjpn    schedule 17.09.2019
comment
!!! Вы только что сэкономили мне много времени !!! Команда NET5 для xUnit будет выглядеть немного иначе, например: ... - person Konstantin Konstantinov; 22.01.2021