2017-10-13 2 views
2

J'essaye d'écrire une extension pour Junit5 similaire à celle que j'avais pour Junit4 mais je n'arrive pas à comprendre comment le faire dans le nouveau système d'extension (sans état).JUnit 5, passer des informations de la classe de test à l'extension

L'idée dans la version précédente était que l'utilisateur pouvait transmettre des informations dans une classe d'extension et donc changer la façon dont il se comportait. Voici un extrait de pseudo montrant à peu près ce qui est utilisé pour faire:

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(); 
    } 
} 

Maintenant, je sais comment faire fonctionner JUnit 5 extension, à utiliser ce etc. cycles de vie, mais je ne sais pas comment faire passer le test-écrivain le pouvoir de modifier le comportement de mon extension avec JUnit5. Des pointeurs appréciés.

Répondre

4

Au JUnit Jupiter 5.0.1, il est malheureusement pas possible de passer des paramètres à un Extensionprogramme comme vous pourriez les règles en JUnit 4.

Cependant, je travaille sur l'ajout d'un tel soutien dans JUnit Jupiter 5.1. Vous pouvez suivre la question suivante si vous aimez: https://github.com/junit-team/junit5/issues/497

En attendant, le seul moyen de transmettre des informations à une extension est l'extension pour soutenir les annotations personnalisées et d'extraire les informations fournies par l'utilisateur à partir de là. Par exemple, j'autorise les utilisateurs à fournir un SpEL personnalisé expression dans l'annotation @EnabledIf dans Spring Framework, et mon extension ExecutionCondition tire l'expression de l'annotation en utilisant la réflexion.

+0

Merci beaucoup pour info, je vais garder un oeil sur celui-ci :) – Siliarus