J'ai un morceau de code qui sera répété à travers plusieurs tests d'intégration. Le code sera exécuté avant et après les tests.Règle de junit Autowire dans le test d'intégration
J'ai décidé que l'utilisation d'une JUnit @Rule serait le meilleur moyen d'y parvenir.
Le problème est que la règle devra avoir accès à quelques haricots de printemps @Autowired. (Les tests sont effectués avec Runner test Spring Integration si autowire fonctionne très bien
J'ai une règle.
public class CustomSpringRule extends ExternalResource {
private final SomeOtherBean;
public CustomSpringRule(SomeOtherBean someOtherBean) {
this.someOtherBean = someOtherBean;
}
@Override
public void before() {
someOtherBean.someMethod();
}
(...)
}
J'ai mon contexte auquel j'ai ajouté mon grain:
@Bean
public CustomSpringRule getCustomSpringRule(SomeOtherBean someOtherBean) {
return new CustomSpringRule(someOtherBean)
}
Enfin, je viens autowired la fève de règle dans le fichier de test:
@Autowire
@Rule
public CustomSpringRule customSpringRule
tout fonctionne très bien, mais je ne nous a jamais vraiment ed @Rule annotation et je suis un peu inquiet que JUnit réflexion et Spring Autowire ne vont pas bien ensemble ou il y aura quelques problèmes qui ne sont pas évidents au premier coup d'oeil.
Quelqu'un at-il des suggestions si c'est valide et sûr?
Il semble que l'odeur d'un code fasse que les tests doivent être exécutés dans un certain ordre. Les tests devraient être indépendants les uns des autres –