Was ist der beste Weg, um ein Zeitlimit pro Test oder pro Klasse einzurichten, wenn junit in perBatch forkmode verwendet wird?

8

Ich möchte die Erstellung abbrechen, wenn jemand einen Test schreibt, der länger als 1 Sekunde dauert, aber wenn ich im perTest-Modus laufe, dauert es viel, viel länger.

Ich könnte wahrscheinlich eine benutzerdefinierte Aufgabe schreiben, die die junit-Berichte analysiert und den darauf basierenden Build nicht erfüllt, aber ich frage mich, ob jemand eine bessere Option kennt oder sich vorstellen kann.

    
Jun-Dai Bates-Kobashigawa 05.01.2012, 13:48
quelle

2 Antworten

10

Wiederbelebung einer alten Frage, da die Antwort kein Beispiel liefert.

Sie können ein Zeitlimit angeben

  1. Pro Testmethode:

    %Vor%
  2. Für alle Methoden in einer Testklasse mit Timeout @Rule :

    %Vor%
  3. Global für die Gesamtzeit, um alle Testmethoden in der Klasse mit einer statischen Timeout @ClassRule :

    auszuführen %Vor%
  4. Und sogar Timeout (entweder @Rule oder @ClassRule ) auf alle Klassen in Ihrer gesamten Suite anwenden :

    %Vor%

BEARBEITEN: Das Timeout wurde vor kurzem eingestellt, um diese Initialisierung zu verwenden

%Vor%

Sie sollten jetzt die Zeiteinheit angeben, da dies Ihrem Code mehr Granularität verleiht.

    
Mifeet 16.08.2015 12:12
quelle
7

Wenn Sie JUnit 4 und @Test verwenden, können Sie den Parameter timeout angeben, der bei Tests, die länger als angegeben dauern, fehlschlägt. Nachteil ist, dass Sie es zu jeder Testmethode hinzufügen müssen.

Eine wahrscheinlich bessere Alternative ist die Verwendung von @Rule mit org.junit.rules.Timeout Mit diesem können Sie es pro Klasse (oder sogar in einer gemeinsamen Superklasse) tun.

    
ftr 05.01.2012 14:27
quelle

Tags und Links