2017-03-07 2 views
0

ich ein Integrationstestframework mich schreibe, und in meiner Eltern Testklasse Ich habe folgende:SpringBoot-Test ContextConfiguration hat keine Banner

@ContextConfiguration(loader = AnnotationConfigContextLoader.class) 
public abstract class IntegrationTestParent extends AbstractTestNGSpringContextTests { 

    ... 

    @Configuration 
    @EnableAutoConfiguration 
    @ComponentScan("redacted") 
    public static class AutomationTestConfig { 
    } 
} 

Was mir ein hohes Maß an Flexibilität erlaubt es jedoch, ich habe bemerkte, dass meine benutzerdefinierte banner.txt Datei nicht mehr ausgedruckt wird, noch wird meine application.properties Datei (die spring.output.ansi.enabled=ALWAYS und einige maven gefilterte Anwendungsvariablen setzt) ​​gelesen.

Zusätzlich zu einigen wirklich leet figlet generierte ASCII-Art, druckte es viele bequeme Debug-Informationen über die JVM und verschiedene System-und Umgebungseigenschaften, so hatte ich eine wirklich gute Idee über die Remote-Umgebungen (a la Jenkins und Bamboo oder irgendjemandes willkürlichen Laptop), sie liefen weiter.

Gibt es eine Möglichkeit, dieses Verhalten zusätzlich zu @ContextConfiguration(loader = AnnotationConfigContextLoader.class) zu bekommen?

Antwort

0

Ich habe eine Zwischenlösung gefunden. Ich werde es als intermediär bezeichnen, weil ich das gewünschte Verhalten bekomme (Annotation-basierte Kontexte, die in Downstream-Projekten geladen werden können, wo ich zusätzliche Konfigurationen und Beans usw. habe), aber ich habe die Klasse AnnotationConfigContextLoader nicht verwendet.

Ich tauschte es für die SpringApplicationContextLoader. Per die javadoc:

A ContextLoader die verwendet werden können Frühjahr Boot-Anwendungen (jene, die normalerweise mit SpringApplication Start) zu testen. Kann verwendet werden, um Nicht-Web-Features zu testen (wie eine Repository-Ebene) oder einen vollständig konfigurierten eingebetteten Servlet-Container zu starten. Verwenden Sie @WebIntegrationTest (oder @IntegrationTest mit @WebAppConfiguration), um anzugeben, dass Sie einen echten Servlet-Container oder @WebAppConfiguration allein verwenden möchten, um einen MockServletContext zu verwenden.

Wenn @ActiveProfiles in der Testklasse bereitgestellt werden, werden sie verwendet, um den Anwendungskontext zu erstellen.

Basierend auf den ersten paar Sätzen, das war im Wesentlichen, was ich suchte.