2017-12-15 7 views
0

Ich versuche, eine in einem "sauberen" Kontext auszuführen, ohne MyApplicationContextInitializer ausgeführt zu haben.Wie ApplicationContextInitializers in @SpringBootTest auszuschließen?

Die MyApplicationContextInitializer ist innerhalb der spring.factories Datei in einem compile-scope Abhängigkeit wie folgt enthalten:

org.springframework.context.ApplicationContextInitializer=\ 
com.eremic.myapp.MyApplicationContextInitializer 

Prüfklasse:

@SpringBootTest(webEnvironment = RANDOM_PORT) 
@RunWith(SpringRunner.class) 
@ContextConfiguration(classes = TestContext.class) 
public class UsersControllerTest {} 

Test-config:

@SpringBootConfiguration 
public class TestContext {} 

Gibt es eine Möglichkeit, MyApplicationContextInitializer von @SpringBootTest auszuschließen?

Ich habe schon mit excludeFilters @ComponentScan.Filters müde, aber es hat keine Auswirkungen auf ApplicationContextInitializer.

Auch habe ich versucht, TestContext mit @SpringBootApplication mit Anmerkungen versehen und Komponenten Scannen mit scanBasePackages und/oder exclude = MyApplicationContextInitializer.class zu beschränken zu verwenden, aber es hat auch keine Wirkung.

Die einzige Möglichkeit, MyApplicationContextInitializer davon abzuhalten, innerhalb @SpringBootTest auszuführen, ist, die maven-Abhängigkeit zu entfernen, in der MyApplicationContextInitializer deklariert wird.

Antwort

0

Es gibt derzeit keine Möglichkeit, Klassen ApplicationContextInitializer zu filtern, die aus Fabriken geladen werden. Um dies auf einer Test-Ebene zu tun, müssten Sie eine benutzerdefinierte Annotation verwenden, die eine andere SpringBootTestContextBootstrapper verwendet. Der Bootstrapper müsste eine SpringBootContextLoader zurückgeben, die die Initialisierer gefiltert hat. Fühlen Sie sich frei, ein Problem anzusprechen, und wir können eine geschützte Methode zu SpringBootContextLoader hinzufügen, die Sie überschreiben können.

+0

Vielen Dank @ phil-webb, ich habe ein Problem vor ein paar Wochen geöffnet, aber es ist als "Frage" markiert und geschlossen https://github.com/spring-projects/spring-boot/issues/11457 – eremic

+0

Jetzt wieder geöffnet und auf 2.0.0.RC2 ausgerichtet –

Verwandte Themen