2016-04-11 4 views
0

Derzeit sehen meine Integrationstest wie folgt aus:Geben Sie config-Datei für @SpringApplicationConfiguration

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = PingFacadeApplication.class) 
@WebIntegrationTest 
public class PingResourceTest { 
    // some tests that use RestTemplate to contact PingFacadeApplication 
} 

PingFacadeApplication wie folgt definiert ist:

@SpringBootApplication 
@EnableDiscoveryClient 
@ComponentScan(basePackages = "edu.self.myapp.ping") 
public class PingFacadeApplication { 

    public static void main(String[] args) { 
     System.setProperty("spring.config.name", "ping-facade-server"); 
     SpringApplication.run(PingFacadeApplication.class, args); 
    } 
} 

Bei normalem Start PingFacadeApplication (dh das Glas läuft), die Config Datei (ping-facade-server.yml) wird korrekt von src/main/resources gelesen. Wenn ich meine Integrationstests ausführe, scheinen die Konfigurationsdateien jedoch nie gelesen zu werden, da der Server immer an Port 8080 gestartet wird. Ich habe auch versucht, die Konfigurationsdatei in src/test/resources zu setzen, aber kein Glück.

Ich weiß, ich kann den Port in der WebIntegrationTest Annotation ändern, aber ich möchte es an zwei Orten vermeiden.

Vielen Dank.

+0

Sind Sie sicher, dass die Datei nicht gelesen wird, kann es nur sein, dass System.setproperty dort keinen Effekt hat? – eis

+0

Die 'main'-Methode wird nur aufgerufen, wenn Sie Ihre Anwendung normal ausführen. Sie wird nicht aufgerufen, wenn Sie einen Test ausführen, damit die Systemeigenschaft nicht festgelegt wird. –

+0

@AndyWilkinson In der Tat muss die Klasse intern anders begonnen werden ... Ich habe einen Weg gefunden, es als Antwort zu veröffentlichen. Vielen Dank! – nyg

Antwort

0

Eine Lösung ist es, den Namen der Konfigurationsdatei mit der @WebIntegrationTest Anmerkung anzuzeigen:

// ... 
@WebIntegrationTest("spring.config.name=ping-facade-server") 
public class PingResourceTest { 

In meinem Fall habe ich eine Ping-Fassade-server.yml Datei in src/test/resources.

Verwandte Themen