我正在尝试使用new feature from Spring Boot 1.3.0.RELEASE - 通过spring-boot-maven-plugin
的配置激活个人资料:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<profiles>
<profile>test</profile>
</profiles>
</configuration>
<executions>
<execution>
<id>start-application</id>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop-application</id>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
但在这种情况下,由于IllegalArgumentException: Could not resolve placeholder 'spring.mail.host' in string value "${spring.mail.host}"
此变量在src/main/resources/application-test.properties
中定义:
spring.profiles: test
spring.mail.host: 127.0.0.1
我的测试看起来像这样:
@ContextConfiguration(
loader = AnnotationConfigContextLoader.class,
initializers = ConfigFileApplicationContextInitializer.class,
classes = TestContext.class
)
public class WhenAnonymousUserRegisterAccount extends AbstractTestNGSpringContextTests {
@Value("${spring.mail.host}")
private String mailHost;
TestContext
仅使用其他属性文件定义PropertySourcesPlaceholderConfigurer
。
有趣的是,如果我删除<profiles>
并激活application.properties
的个人资料,我的测试会有效:
spring.profiles.active: test
所以,当我使用<profiles>
时,看起来Spring没有将application-test.properties
文件加载到环境中。
问题:
application-test.properties
并使用<profiles>
?答案 0 :(得分:2)
如果您在spring-boot-maven-plugin
的配置中指定配置文件,那么只有在您使用该插件执行应用程序时,它们才可用,即运行mvn spring-boot:run
。我怀疑,这不是你的集成测试的情况,因此它不起作用。