如何使用 dotnet vstest 仅 运行 之前失败的测试
How to only run previously failed tests with dotnet vstest
我有一个包含 10,000 多个测试的测试套件,有时只想使用 dotnet vstest
CLI 重新运行 之前 运行 失败的测试。
我最终使用了以下 PowerShell 命令,基于 .\TestResults\
中最新的 trx
文件,再次 运行 再次失败的测试:
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 '^(.*?)\(.*$',''} | Join-String -Separator ','))"
请注意,最大命令行长度有字符限制,当许多测试以前失败时很容易受到影响。
如果可以,请使用 % {$_ -replace '^My\.Long\.And\.Tedious\.Namespace\.', ''}
部分来摆脱命名空间前缀。
我有一个包含 10,000 多个测试的测试套件,有时只想使用 dotnet vstest
CLI 重新运行 之前 运行 失败的测试。
我最终使用了以下 PowerShell 命令,基于 .\TestResults\
中最新的 trx
文件,再次 运行 再次失败的测试:
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 '^(.*?)\(.*$',''} | Join-String -Separator ','))"
请注意,最大命令行长度有字符限制,当许多测试以前失败时很容易受到影响。
如果可以,请使用 % {$_ -replace '^My\.Long\.And\.Tedious\.Namespace\.', ''}
部分来摆脱命名空间前缀。