为@SpringApplicationConfiguration指定配置文件

时间:2016-04-11 15:11:22

标签: java rest spring-boot integration-testing

目前我的集成测试如下所示:

@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注释中的端口,但我想避免在两个地方使用它。

非常感谢。

1 个答案:

答案 0 :(得分:0)

解决方案是使用@WebIntegrationTest注释指示配置文件的名称:

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

在我的情况下,我在src / test / resources中有一个ping-facade-server.yml文件。