Timeout für die einzelnen tests in NUnit
Ich habe Folgendes problem: ich bin mir bewusst, dass es zu einem Timeout-Attribut in NUnit. Mein problem ist, dass die unit-tests tatsächlich erzeugen Sie einen neuen Prozess, die, wenn Sie eingefroren ist nie getötet von NUnit. Wie kann ich implementieren einen timeout, das auch tatsächlich loszuwerden, die Schurken-Prozess?
Dank,
R.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie timeout für die Behauptung, statt der timeout für den gesamten test Methode:
Edit: Die akzeptierte Antwort ist eine bessere.
Wenn dein test irgendwann mal hin (wenn auch später als Sie hoffen), können Sie immer die
MaxTime
Attribut: http://www.nunit.org/index.php?p=maxtime&r=2.5.1 und Aufräumen der thread selbst:Sonst, ist Ihre beste option sein könnte, um implementieren Ihr eigenes timing-Mechanismus. Verwenden Sie einen timer (oder einem anstrengenden while-Schleife) und wenn der timeout überschritten ist, dann kill den Prozess (vielleicht in der ShutDown-Methode, wenn es generische über-tests) und signalstörung.
NUnit timeouts nicht alle Ereignisse, die Ihnen erlauben, um code auszuführen, nachdem das testen auch mal aus. Du musst Rollen Sie Ihre eigene, wie es aussieht.
http://www.nunit.org/index.php?p=timeout&r=2.5.1 :
Den TimeoutAttribute wird verwendet, um geben Sie einen Wert für den timeout in Millisekunden für einen Testfall. Wenn der Testfall ausgeführt wird, die länger als die angegebene Zeit, es wird sofort abgebrochen und gemeldet, wie ein Fehler mit einer Meldung, dass das Zeitlimit überschritten wurde.
Das Attribut kann auch angegeben werden, auf einer Vorrichtung oder Baugruppe, in dem Fall gibt es die Standard-timeout für alle untergeordneten Testfälle.
OK. Nachdem ich versucht habe all die integrierten Funktionen in NUnit und konnte nicht das erreichen, was ich brauchte, habe ich Folgendes gemacht: ich habe ein Zeitgeber, der gesetzt wird in eine Funktion zugeschrieben [SetUp] auf einer Vorrichtung-Ebene und ist somit aufgerufen, vor jedem Test. Wenn die Zeit tickt, bevor der test beendet ist, ich habe gerade die clean-up in der timer-callback.