为@SpringApplicationConfiguration 指定配置文件

Specify config file for @SpringApplicationConfiguration

目前我的集成测试是这样的:

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

PingFacadeApplication 定义如下:

@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);
    }
}

正常启动时(即 运行 jar)PingFacadeApplication,配置文件 (ping-facade-server.yml) 从 src/main/resources 正确读取。但是,当 运行 我的集成测试时,配置文件似乎永远不会被读取,因为服务器始终在端口 8080 上启动。我也尝试将配置文件放在 src/test/resources 中,但没有成功。

我知道我可以在 WebIntegrationTest 注释中更改端口,但我想避免在两个地方使用它。

非常感谢。

一个解决方案是用@WebIntegrationTest注解指明配置文件的名称:

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

就我而言,我在 src/test/resources.

中有一个 ping-facade-server.yml 文件