2008-12-08 7 views
6

Dank eines Library-Upgrades (easymock 2.2 -> 2.4) haben wir Tests gestartet, die mit dem Sperren begonnen haben. Ich hätte gerne eine Auszeit für einzelne Tests, allesamt. Die Idee ist, die eingesperrten Tests zu identifizieren - wir raten derzeit - und beheben sie.Timing-Out-Tests in TestNG

Ist dies möglich, vorzugsweise auf Suite-Ebene? Wir haben 400 Tests, wobei jede Methode oder sogar jede Klasse zeitaufwendig ist.

Antwort

5

Die suite tag kann das Timeout-Attribut haben. Dieses Timeout wird standardmäßig für alle Testmethoden verwendet.

Diese Standard-Zeitüberschreitung kann dann je Testmethode außer Kraft gesetzt werden.

+0

Wir benutzen Maven, also musste ich die relevanten Einstellungen auf dem todsicheren Plugin finden. Leider sagt es uns nicht, welcher Test am sterben ist ?! Na ja, das wird eine andere Frage sein. – sblundy

+0

Sie können das Timeout-Attribut auch zum Element unter einer hinzufügen. Diese Verbindung mit Einschließen/Ausschließen innerhalb des Elements ermöglicht eine feinkörnigere Kontrolle. – Saish

2

Wenn sich die Suite-Ebene als falsch erweist (dh "zu weites Netz", weil Sie zu viele Methoden mit einer Zeitlimitgrenze markieren), müssen Sie eine benutzerdefinierte IAnnotationTransformer definieren, die für jeden unleserlich ist Funktion, gibt Ihnen die Möglichkeit, eine @Test Annotation zu modifizieren (zB mit der setTimout() method).
(setTimout(0) bricht eine Timeout-Richtlinie)

1

Sie eine Suche und für „@Test“ mit „@Test (Timeout =)“ ersetzen Sollte die eingesperrt Test zu finden, arbeiten und kann danach wieder rückgängig gemacht werden.

+1

das ist nicht sehr trocken-freundlich – Hilikus

2

Sehr spät, aber: Running jstack -l <PID> wird Ihnen den Stack-Dump geben, den Sie überprüfen können, welche Anrufe stecken bleiben. Vielleicht möchten Sie ein paar Mal probieren, um sicherzugehen, dass sie feststecken.