SpringAoot测试中的@ActiveProfile(" integration-test")无法解析

时间:2016-12-10 23:02:46

标签: spring-boot spring-profiles

我使用以下配置进行集成测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("integration-test")
@ContextConfiguration(classes = { PersistenceJpaConfig.class, ContextConfig.class, ServiceConfig.class, WebConfig.class})
@WebAppConfiguration
public class LeadsIntegrationTest {

...

}

PersistenceJpaConfig类如下:

@Configuration
@EnableTransactionManagement
@ComponentScan({ "org.persistence", "org.common.persistence" })
@PropertySource({ "persistence-${spring.profiles.active}.properties" })
@EnableJpaRepositories(basePackages = org.persistence.dao")
public class PersistenceJpaConfig {

...

}

$ {spring.profiles.active}在活动配置文件为" dev"时解析正常,但设置为" integration-test"在@Act​​iveProfiles("集成测试)中,它无法解决。 persistence-dev.properties和persistence-integration-test.properties都位于src / main / resources中。 dev的属性具有mysql配置,并且集成测试具有h2嵌入式配置,用于运行与dev数据隔离的集成测试。测试运行时,我得到以下内容:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.profiles.active' in string value "persistence-${spring.profiles.active}.properties"

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

您还没有告诉我如何设置@ActiveProfiles个人资料,但我最好的猜测是您使用系统属性进行设置。当您使用@PropertySource时,配置文件的分辨率来得太迟,application-integration-test.properties注释无法获取值。

无论如何,你知道100%的自定义代码是否支持开箱即用的开箱即用?为什么你不能把这些东西放在application-dev.properties和{{1}}?