Ich möchte Komponententests über MS Test (von Windows-Konsole) auf eine Weise ausführen, dass ich die Testausführung stoppen/beenden kann, wenn die fehlgeschlagenen Tests bestimmten übersteigt Schwellwert.Wie MsTest Tests nach * n * fehlgeschlagen Tests zu stoppen
Für meinen Anwendungsfall gibt es keinen Punkt Tests laufen zu halten, wenn bestimmter Prozentsatz der bereits nicht bestandenen Tests.
ich eine neue Konsole bei der Erstellung App nur denken kann, die MSTest.exe Ausführung wickeln, so kann ich die Standardausgabe in Echtzeit, und schließlich töten den Prozess, zum Beispiel analysieren:
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;
}
}
}
Kann jemand einen besseren Weg vorschlagen, dies zu tun? Ich denke nicht, dass dies von MsTest nativ unterstützt wird.
Powershell scheint eine Option zu sein, aber die stdout Umleitung ist nicht trivial.
aktualisieren
Als Hinweis, ich den Test-Code nicht ändern kann, muss ich dies in irgendeiner Weise ohne Änderung der Tests Code durchgeführt werden.
Dank für diese Antwort, aber ich bin nicht in der Lage, die Tests Code :( – thepirat000
Vielen Dank für die Antwort zu ändern. Es löste mir ein riesiges Problem mit dem Testen eines Black-Box-Element verwendet, die ein Entsorgung Problem hat. ich habe eine distructor auf die Testklasse, da ich den Prozess getötet, nachdem die Testergebnisse berechnet wurde und aktualisiert. – Seffix