Я хочу запускать модульные тесты через MS Test (из консоли Windows) таким образом, чтобы я мог остановить/убить выполнение теста всякий раз, когда не прошел тесты, счет превышает определенные пороговое значение.Как остановить выполнение тестов MsTest после * n * неудачных тестов
Для моего случая использования нет смысла продолжать выполнение тестов, когда определенный процент тестов уже не выполнен.
я могу думать только в создании нового консольного приложения, чтобы обернуть выполнение MSTest.exe, так что я могу разобрать стандартный вывод в реальном времени, и в конечном итоге убить процесс, например:
var pi = new ProcessStartInfo()
{
FileName = MS_TEST,
UseShellExecute = false,
RedirectStandardOutput = true,
Arguments = MS_TEST_ARGS
};
int passed = 0; int failed = 0;
using (var process = Process.Start(pi))
{
while (!process.StandardOutput.EndOfStream)
{
string line = process.StandardOutput.ReadLine();
if (line.Contains("Passed"))
passed++;
if (line.Contains("Failed"))
failed++;
if (failed >= THRESHOLD)
{
process.Kill();
break;
}
}
}
Может ли кто-нибудь предложить лучший способ для этого? Я не думаю, что это поддерживается MsTest.
PowerShell представляется вариантом, но перенаправление stdout не является тривиальным.
Update
Как примечание, я не могу изменить тестовый код, мне нужно, чтобы это было сделано без изменения кода тестов в любом случае.
Спасибо за этот ответ, но я не могу изменить код тесты :( – thepirat000
Спасибо за этот ответ. Он решил меня огромная проблема с тестированием с использованием элемента черного ящика, который имеет УТИЛИЗАЦИИ вопрос. Я добавил класс-конструктор к тестовому классу, там я убил процесс, после того как результаты тестов были рассчитаны и обновлены. – Seffix