我使用以下配置进行集成测试:
@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"在@ActiveProfiles("集成测试)中,它无法解决。 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"
这里发生了什么?
答案 0 :(得分:0)
您还没有告诉我如何设置@ActiveProfiles
个人资料,但我最好的猜测是您使用系统属性进行设置。当您使用@PropertySource
时,配置文件的分辨率来得太迟,application-integration-test.properties
注释无法获取值。
无论如何,你知道100%的自定义代码是否支持开箱即用的开箱即用?为什么你不能把这些东西放在application-dev.properties
和{{1}}?