2017-01-11 4 views
1

Wie würden Sie eine @ Repeat Annotation für Junit5 erstellen?Wiederholen Sie die Annotation für Junit5

Auch ich möchte die Option in der Lage sein, einen wiederholten Test als einen Test in der IDE gemeldet haben.

Und jeder wiederholt sollte in der Lage sein, seine Nummer in irgendeiner Weise zu protokollieren, so dass Sie Fortschritte sehen können.

Antwort

0

Es gibt derzeit keine Möglichkeit zu tun, was Sie fragen, da es keinen Erweiterungspunkt gibt, der die flexible Erstellung von Tests ermöglicht. Aber möglicherweise können Sie etwas mit einer Hilfsmethode tun, die dynamic tests hervorbringt.

+0

Wiederholte Testaufrufe kommen, bald: https://github.com/junit-team/junit5/pull/642 – Sormuras

0

Ich finde, dass normalerweise, wenn Sie einen ganzen Test wiederholen möchten, es besser ist, die flockigen Operationen innerhalb des Tests zu identifizieren und erneut zu versuchen.

z.B. Stellen Sie sich vor, dass im folgenden Code getResponse() manchmal eine Ausnahme auslöst. Sie können Spring Retry verwenden (die Sie mit oder ohne andere Spring Projekte verwenden können):

@Test 
void somethingFlaky() { 
    String actual = new RetryTemplate().execute(retryContext -> getResponse()); 
    assertEquals("Hello World!", actual); 
} 

In diesem Beispiel, wenn getResponse() Ausnahmen 3 Mal in Folge führen dann der gesamte Test wird mit Ausnahme in den letzten geworfen scheitern Versuch. RetryTemplate kann mit verschiedenen Wiederholungs- und Zurückweisungsrichtlinien konfiguriert werden (z. B. 8 Mal wiederholen, 50 Millisekunden zwischen jedem Versuch, exponentielles Zurücksetzen usw.).

Auf diese Weise können Sie Ressourcen nach Bedarf verwalten und das Test-Framework verlassen, um das zu tun, was es am besten kann: Tests verwalten (und nicht flockige Testziele).

+1

das sieht nach einem guten Ansatz aus –

3

Seit M4, JUnit Jupiter bietet erstklassige Unterstützung für wiederholte Tests:

@RepeatedTest(10) 
void repeatedTest() { 
    // ... 
} 

verweisen auf die User Guide für Dokumentation und weitere Beispiele.

Verwandte Themen