2017-10-13 2 views
2

Ich versuche, eine Erweiterung für Junit5 zu schreiben, ähnlich wie für Junit4, aber ich verstehe nicht, wie man das im neuen (statuslosen) Erweiterungssystem macht.JUnit 5, Informationen von der Testklasse an die Erweiterung weitergeben

Die Idee in der vorherigen Version war, dass Benutzer Informationen in Erweiterungsklasse übergeben und damit die Art, wie es sich verhält, ändern können. Hier ist ein Ausschnitt Pseudo zeigt ungefähr das, was verwendet wird, zu tun:

public void MyTest { 

    // here I can define different behaviour for my extension 
    @Rule MyCustomRule rule = MyCustomRule.of(Foo.class).withPackage(Bar.class.getPackage).alsoUse(Cookies.class); 

    @Test 
    public void someTest() { 
    // some test code already affected by the @Rule 
    // plus, user has access to that class and can use it, say, retrieve additional information 
    rule.grabInfoAboutStuff(); 
    } 
} 

Nun, ich weiß, wie JUnit 5 Erweiterung zu betreiben, was Lebenszyklen usw. zu verwenden, aber ich weiß nicht, wie der Test-Schriftsteller geben die Möglichkeit, das Verhalten meiner Erweiterung mit JUnit5 zu ändern. Alle Hinweise geschätzt.

Antwort

4

Ab JUnit Jupiter 5.0.1 ist es leider nicht möglich, Parameter zu einem Extensionprogrammatisch für Regeln wie Sie konnte in JUnit 4.

Jedoch habe ich auf die Arbeit so mit Unterstützung in JUnit bin, passieren Jupiter 5.1. Sie können die folgende Frage folgen, wenn Sie mögen: https://github.com/junit-team/junit5/issues/497

In der Zwischenzeit ist der einzige Weg zu Pass Informationen zu einer Erweiterung für die Erweiterung ist individuelle Anmerkungen und extrahieren Sie die vom Benutzer gelieferten Informationen von dort zu unterstützen. Zum Beispiel erlaube ich Benutzern, eine benutzerdefinierte SpEL expression in der @EnabledIf Annotation im Spring Framework und meine ExecutionCondition Erweiterung zieht die expression aus der Annotation mit Reflexion.

+0

Vielen Dank für Informationen, ich werde aufpassen, dass ein :) – Siliarus

Verwandte Themen