如何仅使用dotnet vstest运行先前失败的测试

时间:2019-09-17 19:36:41

标签: .net-core vstest vstest.console.exe

我有一个包含10,000多个测试的测试套件,有时只想使用dotnet vstest CLI重新运行在上一次运行中失败的测试。

1 个答案:

答案 0 :(得分:0)

我最终使用以下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\.', ''}部分来摆脱名称空间前缀。