Ich habe ein Stück Code, der über mehrere Integrationstests wiederholt wird. Der Code wird vor und nach den Tests ausgeführt.Autowire Junit Regel im Integrationstest
Ich habe entschieden, dass die Verwendung einer JUnit @Rule der beste Weg ist, dies zu erreichen.
Das Problem ist, dass die Regel Zugriff auf einige @Autowired Spring Beans haben muss. (Die Tests ausgeführt mit Feder Integration Test Runner so Autowire funktioniert
Ich habe eine Regel:.
public class CustomSpringRule extends ExternalResource {
private final SomeOtherBean;
public CustomSpringRule(SomeOtherBean someOtherBean) {
this.someOtherBean = someOtherBean;
}
@Override
public void before() {
someOtherBean.someMethod();
}
(...)
}
ich meinen Kontext haben, auf die ich habe meine Bohnen hinzugefügt:
@Bean
public CustomSpringRule getCustomSpringRule(SomeOtherBean someOtherBean) {
return new CustomSpringRule(someOtherBean)
}
Schließlich habe ich gerade die Regel Bean innerhalb der Testdatei:
Alles funktioniert gut, aber ich nie wirklich uns ed @Rule Annotation und ich bin etwas besorgt, dass JUnit Reflection und Spring Autowire nicht gut zusammenpassen oder es wird einige Probleme geben, die auf den ersten Blick nicht offensichtlich sind.
Hat jemand irgendwelche Vorschläge, ob dies gültig und sicher ist?
es scheint wie ein bisschen Code-Geruch zu Tests, die in einer bestimmten Reihenfolge ausgeführt werden müssen. Tests sollten unabhängig voneinander sein –