Spring Boot中WebIntegrationTest和ContextConfiguration之间的冲突

时间:2015-12-18 13:33:45

标签: spring spring-boot spring-test

当我使用@WebIntegrationTest@ContextConfiguration进行测试时,我发现无法检索Spring Boot应用程序的随机生成端口。

我的测试看起来像:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ContextConfiguration(classes = {TestConfig.class})
@WebIntegrationTest(randomPort = true)
public class SpringBootAppTest{

    @Value("${local.server.port}")
    private int port;

    @Test
    public void testApp(){
      //do test
    }
}

TestConfig看起来像:

@Configuration
public class TestConfig {

    //Override my datasource bean to use a local inmemory HSQL DB
    @Bean(name="datasource")
    public DataSource inMemoryDataSource(){
        JDBCDataSource inMemory = new JDBCDataSource();
        inMemory.setUrl("jdbc:hsqldb:mem:SERVICE_BROKER;MODE=MySQL;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=TRUE");
        return inMemory;
    }

}

当我运行我的测试时,我得到:

Caused by: java.lang.NumberFormatException: For input string: "${local.server.port}"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:569)
    at java.lang.Integer.valueOf(Integer.java:766)
    at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:193)
    at org.springframework.beans.propertyeditors.CustomNumberEditor.setAsText(CustomNumberEditor.java:113)

如果我删除@ContextConfiguration注释,应用程序会在其随机端口上启动,但它无法尝试找到真正的数据源连接。

如何让他们一起玩得很好?

0 个答案:

没有答案